果洛州公司网站建设六安网约车
利用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接口。
 
 追溯一下源码:
 
 
