36套java进阶高级架构师视频+38套大数据视频 保证全是硬货需要的
+微信:
du13797566440
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
/**
* jdk中的future模式
*/
public class worker implements Callable {
private int id;
public worker(int id) {
this.id=id;
}
public Object call() throws Exception {
Thread.sleep(3000);//假设每个线程执行任务耗时3秒
return id+"";
}
public static void main(String[] args) {
Callable<String> callable=new worker(1);
final FutureTask<String> futureTask = new FutureTask<String>(callable); //任务1
Callable<String> callable1=new worker(2);
final FutureTask<String> futureTask1 = new FutureTask<String>(callable1);//任务2
ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();//缓冲区线程池
//submit 和excute方法的区别 submit可以传入实现Callable接口的任务,excute只能传入实现runable接口的任务
Future submit = newCachedThreadPool.submit(futureTask);
Future submit2 = newCachedThreadPool.submit(futureTask1);
newCachedThreadPool.execute(new Runnable() {
public void run() {
try {
String string2 = futureTask.get();//获取不到结果将被阻塞
System.out.println(string2);
String string = futureTask1.get();//获取不到结果将被阻塞
System.out.println(string);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
});
System.out.println("future模式正在执行");
}
}
---------------------------------
future模式正在执行
1
2