阅读背景:

Callable 与 Future

来源:互联网 
import java.util.ArrayList; import java.util.List; 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; public class CallableTest { // 异步 木桶原理 public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService executorService = Executors.newCachedThreadPool(); int num = 5; System.out.println(System.currentTimeMillis()); List<Future<String>> resultList = new ArrayList<Future<String>>(); for (int i = 0; i < num; i++) { Future<String> futureTask = executorService.submit(new TaskCallable(i)); resultList.add(futureTask); } System.out.println(System.currentTimeMillis()); for (Future<String> future: resultList) { System.out.println(future.get()); } System.out.println(System.currentTimeMillis()); } public static class TaskCallable implements Callable<String>{ private int taskId; public TaskCallable(int taskId) { this.taskId = taskId; } @Override public String call() throws Exception { Thread.sleep(taskId*1000); return "taskId="+taskId+",time="+System.currentTimeMillis(); } } } import java.util.ArrayList; import java.util.List;


你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: