JUC-6-Callable接口

创建线程的方式
 
               不能有返回值,且不能声明抛出异常 
             
                                                         1.  继承Thread 类  重写Thread类的run()方法                   线程不共享资源


                                                          2. 实现Runnable接口   重写Runnable接口 run()方法      线程共享资源
                
 
                有返回值,且可以声明抛出异常 
                                                            
                                                          3. 实行Callable接口    重写call()方法
                    
               
 
package com.wf.zhang.juc;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class TestCallabel {

public static void main(String[] args) {

ThreadDemo2 td = new ThreadDemo2();

//FutureTask用来接收Callable结果
FutureTask<Integer> futureTask = new FutureTask<Integer>(td);

//FutureTask实现了RunnableFuture接口,可以作为 Thread对象的target
new Thread(futureTask).start();

try {
Integer sum = futureTask.get(); //FutureTask 也是闭锁
System.out.println(sum);
} catch (InterruptedException | ExecutionException e) {
}
}
}


class ThreadDemo2 implements Callable<Integer> {

@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i <= 100; i++) {
System.out.println(i);
sum += i;
}
return sum;
}
}
posted @ 2019-12-22 16:46  wf.zhang  阅读(349)  评论(0编辑  收藏  举报