当前位置: 代码迷 >> J2SE >> java.util.concurrent.ExecutorService的有关问题
  详细解决方案

java.util.concurrent.ExecutorService的有关问题

热度:196   发布时间:2016-04-23 21:25:26.0
java.util.concurrent.ExecutorService的问题!
ExecutorService executorService = Executors.newCachedThreadPool();
//10个FutureTask
        List<FutureTask> futureTasks = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            futureTasks.add(new FutureTask<>(new Callable<String>() {//FutrueTask的构造参数是一个Callable接口或runnable接口
                @Override
                public String call() throws Exception {
                    Thread.currentThread().sleep(1000);
                    return Thread.currentThread().getName();//这里是异步操作
                }
            }));
        }
executorService.invokeAll(futureTasks);

最后一行提示:没有这个构造器。为什么?

------解决方案--------------------
FutureTask没有实现Callable
------解决方案--------------------

ExecutorService executorService=Executors.newCachedThreadPool();
//10个FutureTask
List<FutureTask> futureTasks=new ArrayList<>();
for (int i=0; i<10; i++) {
futureTasks.add(new FutureTask<>(new Callable<String>() {//FutrueTask的构造参数是一个Callable接口或runnable接口
@Override
public String call() throws Exception {
Thread.currentThread();
Thread.sleep(1000);
return Thread.currentThread().getName();//这里是异步操作
}
}));
}
for (FutureTask futureTask : futureTasks) {
executorService.execute(futureTask);
}
------解决方案--------------------

for (FutureTask futureTask : futureTasks) {
    executorService.execute(futureTask);
}

------解决方案--------------------
引用:


ExecutorService executorService=Executors.newCachedThreadPool();
//10个FutureTask
List<FutureTask> futureTasks=new ArrayList<>();
for (int i=0; i<10; i++) {
futureTasks.add(new FutureTask<>(new Callable<String>() {//FutrueTask的构造参数是一个Callable接口或runnable接口
@Override
public String call() throws Exception {
Thread.currentThread();
Thread.sleep(1000);
return Thread.currentThread().getName();//这里是异步操作
}
}));
}
for (FutureTask futureTask : futureTasks) {
executorService.execute(futureTask);
}


2楼正解!
  相关解决方案