有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java拒绝ExecutionException,即使ExecutorService由IsShutton()保护

我有一个让我发疯的问题,我需要请教你们的集体智慧

我有一个ThreadPoolExecutor,池为1,由Executors调用。newFixedThreadPool。我保护所有遗嘱执行人。执行()与!isShutdown()自执行器。shutdown()是从另一个线程调用的,因此应该能够说执行器不会抛出RejectedExecutionException。然而,这是我随机看到的

有人知道我为什么会看到这种行为吗


共 (2) 个答案

  1. # 1 楼答案

    您可能会阅读一篇关于double-checked locking的文章,以了解非同步的“if-then-act”方法在java中如何/为什么不起作用

    出于好奇,你为什么要费心检查这项工作是否会被拒绝?我不记得以前见过这么做。相反,为什么不捕获并处理抛出的任何被拒绝的ExecutionException呢

    还要注意如何处理其他错误情况,尤其是调用shutdown时正在队列中运行或等待的任务。《Java并发性在实践中》的第7章有很多关于这方面的好信息