在此测试场景中提交的任务(线程)数量也不多。
答案 0 :(得分:30)
您需要提供有关如何在池中实例化和调用submit
的代码示例(IP应该不是问题,因为我们不需要您{{1}的内部细节类或类似的东西)。
根据您提供的信息,您几乎肯定会在向其提交可调用对象之前关闭执行程序服务。检查您是否拨打了Callable
或shutdown
,如果是,请确保您在此之后不再添加任务。
除此之外,您可能希望注册自己的shutdownNow
实现以帮助调试;只要执行程序无法接受任务,就会调用它的rejectedExecution消息,因此你可以在那里放置一些基本的状态检查逻辑来帮助你找到原因。
答案 1 :(得分:25)
我没有看到调用Executors.newCachedThreadPool()
方法的RejectedExecutionException
方法的任何地方。只有三种情况似乎在Java 6中抛出:
execute()
上调用ThreadPoolExecutor
并且已达到最大池大小时。execute()
同时在ThreadPoolExecutor
上致电shutdownNow
时,shutdownNow
电话基本上失败了。ScheduledThreadPoolExecutor
中安排执行runnable时。