public class CallableAndFuture {
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<String> submit = executorService.submit(new Callable<String>() {
@Override
public String call() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("调用执行call");
return "hello";
}
});
System.out.println("获得结果:"+submit.get());//阻塞到这里直到结果返回
System.out.println("方法结束");
}
}
//收菜的实现demo
ExecutorService threadPool = Executors.newFixedThreadPool(10);
ExecutorCompletionService<Integer> service = new ExecutorCompletionService<Integer>(threadPool);
for(int i=0;i<10;i++){
final int task=i;
service.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
int time = new Random().nextInt(5000);
Thread.sleep(time);
return task;
}
});
}
System.out.println("任务已经提交");
for(int i=0;i<10;i++){
Integer result = service.take().get();
System.out.println(result);
}
}
如有疑问,请发邮件:[email protected]
github: https://github.com/wangrui0/