一、多线程的创建方法
多线程的创建方法有三种:
1、继承Thread类,重写run()方法
class NewThread extends Thread{
void run(){}
}
class Solution{
public static void main(String[] args){
NewThraed td = new NewThread();
td.start();
}
}
2、实现Runnable接口
class NewThread implement Runnable{
void run(){}
}
class Solution{
public static void main(String[] args){
NewThraed ntd = new NewThread();
Thraed td= new Thread(ntd);
td.start();
}
}
3、实现CallAble接口
class NewThread implement Callable{
void call(){}
}
class Solution{
public static void main(String[] args){
NewThraed ntd = new NewThread();
FutureTask ft = new FutureTask(ntd)
Thread td = new Thread(ft);
td.start();
}
}
二、CallAble和RunnAble的异同
相同点:CallAble和RunnAble都是函数式接口(FuncationalInterfice)
不同点:CallAble实现的多线程有返回值,RunnAble实现的多线程无返回值
三、CallAble实现多线程浅析
CallAble在实现多线程时,需要用CallAble实现类对象作为参数创建FutureTask的对象,再使用FutureTask的对象作为参数创建Thread对 象,完成多线程的创建。最后,FutureTask的对象通过get()方法获取返回值。
在创建多线程时,并没有以Futuretask的对象作为参数的Thread构造方法,不过查看FutureTask可以知道,FutureTask实现了RunnAbleFuture接口,而RunnAbleFuture接口继承了RunnAble接口和Future接口,所以,FutureTask类具有Runnable接口实现类的所有性质,所有可以使用Thread的构造方法创建多线程。