Java执行器在任务完成之前退出 公共类MyCallable实现可调用{ @凌驾 公共布尔调用(){ while(true){ 试一试{ […东西] }捕获(例外e){ System.out.println(“错误!”); } } } } 公共静态void main(字符串[]args)引发异常{ int parallellcallables=6; ThreadFactory namedThreadFactory=新的ThreadFactoryBuilder() .setNameFormat(“抓取器线程-%d”).build(); facebookInfoGrabberExecutor=Executors.newFixedThreadPool(parallelCallables,namedThreadFactory); List futures=facebookInfoGrabberExecutor.invokeAll(任务); System.out.println(“不可访问”); }
尽管这似乎是不可能的,但我的程序可以打印“无法访问”。 当它到达该行时,所有进程都在等待。Java执行器在任务完成之前退出 公共类MyCallable实现可调用{ @凌驾 公共布尔调用(){ while(true){ 试一试{ […东西] }捕获(例外e){ System.out.println(“错误!”); } } } } 公共静态void main(字符串[]args)引发异常{ int parallellcallables=6; ThreadFactory namedThreadFactory=新的ThreadFactoryBuilder() .setNameFormat(“抓取器线程-%d”).build(); facebookInfoGrabberExecutor=Executors.newFixedThreadPool(parallelCallables,namedThreadFactory); List futures=facebookInfoGrabberExecutor.invokeAll(任务); System.out.println(“不可访问”); },java,parallel-processing,executorservice,hazelcast,Java,Parallel Processing,Executorservice,Hazelcast,尽管这似乎是不可能的,但我的程序可以打印“无法访问”。 当它到达该行时,所有进程都在等待。 我使用hazelcast,这可能是罪魁祸首,但我仍然不知道。您需要关闭您的执行器来完成所有任务 public class MyCallable implements Callable<Boolean> { @Override public Boolean call() { while(t
我使用hazelcast,这可能是罪魁祸首,但我仍然不知道。您需要关闭您的
执行器来完成所有任务
public class MyCallable implements Callable<Boolean> {
@Override
public Boolean call() {
while(true){
try{
[... stuff]
}catch(Exception e){
System.out.println("Error!");
}
}
}
}
public static void main(String[] args) throws Exception {
int parallelCallables = 6;
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("Grabber-thread-%d").build();
facebookInfoGrabberExecutor = Executors.newFixedThreadPool(parallelCallables, namedThreadFactory);
List<Future<Boolean>> futures = facebookInfoGrabberExecutor.invokeAll(tasks);
System.out.println("unreachable");
}
intparallelcallables=6;
ThreadFactory namedThreadFactory=新的ThreadFactoryBuilder()
.setNameFormat(“抓取器线程-%d”).build();
ExecutorService facebookInfoGrabberExecutor=Executors.newFixedThreadPool(parallelCallables,namedThreadFactory);
List futures=facebookInfoGrabberExecutor.invokeAll(任务);
//添加这个!!!
facebookInfoGrabberExecutor.shutdown();
而(!facebookInfoGrabberExecutor.WaitiveTermination(1,时间单位.分钟)){
System.out.println(“等待”);
}
System.out.println(“全部完成”);
int parallelCallables = 6;
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("Grabber-thread-%d").build();
ExecutorService facebookInfoGrabberExecutor = Executors.newFixedThreadPool(parallelCallables, namedThreadFactory);
List<Future<Boolean>> futures = facebookInfoGrabberExecutor.invokeAll(tasks);
// Add this!!!
facebookInfoGrabberExecutor.shutdown();
while (!facebookInfoGrabberExecutor.awaitTermination(1, TimeUnit.MINUTES)) {
System.out.println("Waiting");
}
System.out.println("All done.");