gpt4 book ai didi

java - 关闭静态创建的 executorservice block 分配的变量本身?

转载 作者:行者123 更新时间:2023-12-01 18:04:19 27 4
gpt4 key购买 nike

我只是想知道这段代码是如何工作的解释

假设我们在下面有工作类(class)

 public  class Work  {
private static ThreadPoolExecutor executorService;

private Work(){};

public static void instansiate(int numberOfThread){
executorService= (ThreadPoolExecutor) Executors.newFixedThreadPool(numberOfThread);
}

public static void shutDown(){
executorService.shutdown();
}

public static ExecutorService getExecutorService() {
return executorService;
}

public static int getThreadCount(){
return executorService.getCorePoolSize();
}
}

我在下面的方法中调用这个类

 public static void xx() throws ExecutionException, InterruptedException {
Work.instansiate(2);
System.out.println("Thread count= " + Work.getThreadCount());
ExecutorService executorService = Work.getExecutorService();
Future<String> future1 = executorService.submit(new Callable<String>() {
@Override
public String call() throws Exception {
return "future1";
}
});
String resFuture1 = future1.get();
System.out.println(resFuture1);
Work.shutDown();
Future<String> future2 = executorService.submit(new Callable<String>() {
@Override
public String call() throws Exception {
return "future2";
}
});

String resFuture2 = future2.get();
System.out.println(resFuture2);

}

这段代码在 Work.shutDown() 行之后抛出异常,并表示被 java.util.concurrent.ThreadPoolExecutor@234bef66[Termied, pool size = 0, activethreads = 0 ...

我已将 Work.getExecutorService 分配给另一个 executorService,关闭 Work executorservice 如何阻止分配的一个。

最佳答案

实际上executorService与Work.executorService()持有相同的引用,因此受到关闭Work的executorservice的影响。

关于java - 关闭静态创建的 executorservice block 分配的变量本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60581672/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com