1.继承 Thread
public class MyThread extends Thread {
@Override
public void run() {
// TODO: 2019/2/28
}
}
2.实现 Runnable
public class MyThread implements Runnable {
@Override
public void run() {
// TODO: 2019/2/28
}
}
3.Callable 和 FutureTask
public class MyThread implements Callable<String> {
@Override
public String call() throws Exception {
return "hello world";
}
}
class CallTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
FutureTask<String> strTask = new FutureTask<>(new MyThread());
strTask.run();
if (strTask.isDone()) {
System.out.println(strTask.get());
}
}
}
网上也有说法是四种创建线程的方式,第四种是线程池,但是我不太认同,所以只写了三种,因为线程池的方式只是启动,而非是创建。
网友评论