利用JUC包创建线程的三种方式:
- 通过继承
Thread
类创建线程类 - 实现
Runnable
接口创建线程类 - 通过
Callable
和Future
接口创建线程
继承Thread类创建线程
class Thread1 extends Thread {
@Override
public void run() {
System.out.println("启动线程1");
}
}
实现Runnable创建线程
class Thread2 implements Runnable {
@Override
public void run() {
System.out.println("启动线程2");
}
}
通过Callable和Future接口创建线程
class CallableClass implements Callable<Integer> {
@Override
public Integer call() throws Exception {
System.out.println("启动线程3");
return 200;
}
}
测试函数:
import java.util.concurrent.*;
public class TestThread {
public static void main(String[] args) {
Thread1 t1 = new Thread1();
Thread2 t2 = new Thread2();
CallableClass call = new CallableClass();
FutureTask<Integer> future =
new FutureTask<>(call);
Thread t3 = new Thread(future);
t1.start();
t2.run();
t3.start();
}
}
根据JDK文档的说法,这里的FutureTask
实现了Future
接口,同时也实现了Runnable
接口。
追溯一下源码: