利用JUC包创建线程的三种方式:
- 通过继承
Thread
类创建线程类 - 实现
Runnable
接口创建线程类 - 通过
Callable
和Future
接口创建线程
继承Thread类创建线程
class Thread1 extends Thread {@Overridepublic void run() {System.out.println("启动线程1");}
}
实现Runnable创建线程
class Thread2 implements Runnable {@Overridepublic void run() {System.out.println("启动线程2");}
}
通过Callable和Future接口创建线程
class CallableClass implements Callable<Integer> {@Overridepublic 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
接口。
追溯一下源码: