传建一个线程有四种方式:
1. 创建Thread
2. 创建类实现Runnable,然后new Thread(new Runnable());
3. 创建类实现Callable,然后new Thread(new FutureTask(new Callable()));
4. 线程池
Callable接口创建一个线程
创建一个类实现Callable接口在call()方法
class MyCallable implements Callable<Integer>{
private Integer sum = 0;
/**
* 类似run方法不过带返回值,返回值类型就是泛型的类型
*/
@Override
public Integer call() throws Exception {
for(int i=0;i<100;i++){
sum+=i;
}
return sum;
}
}
测试:
public class TestCallable {
public static void main(String[] args) {
MyCallable mc = new MyCallable();
FutureTask<Integer>ft = new FutureTask<Integer>(mc);
new Thread(ft).start();
try {
int result = ft.get();
System.out.println("====>"+result);//sum
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
结果输出:
===>4950