第七篇:Java——三种创建线程Thread的方法
---------------------------------------------------------------------------------------------------------
在日常生活中我们会创建多线程将耗时代码放进新建的线程里,提高代码的执行速度。那么今天我们就来看一下创建线程的三种方法
方法一:
新建类继承Thread类并重写run()方法,在主类中创建该类的子类对象,start()方法开启线程,代码如下://新建类并继承Thread类
public class MyThread extends java.lang.Thread {
//重写run方法方法里面填写该线程执行的代码,一般为耗时代码
@Override
public void run() {
//这里面填写新线程里面的代码,一般为耗时代码
}
}
在主类中创建该类的子类对象,并开启线程
public class Test {
public static void main(String[] args) {
//创建该类的子类对象
MyThread th = new MyThread();
//开启线程
th.start();
}
}
方法二:
新建类实现Runnable接口并重写run()方法//新建类并实现Runnable接口
public class MyThread implements Runnable {
//重写run方法
@Override
public void run() {
//该线程代码,一般为耗时代码
}
}
创建该类的子类对象,作为参数传给Thread类,开启线程
public class Test {
public static void main(String[] args) {
MyThread myThread = new MyThread();
Thread th = new Thread(myThread);
th.start();
}
}
方法三:
新建类并实现Callable接口,并重写run方法public class MyThread implements Callable<> {
@Override
public Object call() throws Exception {
//在这里填写线程代码,一般为耗时代码
//用此方法创建的线程一定要有返回值
return null;
}
}
在主类中创建该接口并将该接口的子类对象作为参数传给FutureTask,再新建Thread对象,将FutureTask作为参数传给Thread
public class Test {
public static void main(String[] args) {
//创建接口
MyThread myThread = new MyThread();
//将接口的子类对象传给FutureTask
FutureTask task = new FutureTask<>(myThread);
//创建Thread对象并将task传给它
Thread th = new Thread(task);
//开启线程
th.start();
}
}
以上是创建线程的三种方法,我们常用的是方法一与方法二。方法二比方法一更具拓展性和维护性。
方法二是实现了Runnable接口,方法三是实现了Callable接口,但是实现Runnable接口重写的run()方法中没有返回值,如果我们需要有返回值,我们就用方法三实现Callable接口并重写call()方法