Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的线程池实际上停止了()线程?_Java_Multithreading_Threadpool - Fatal编程技术网

Java中的线程池实际上停止了()线程?

Java中的线程池实际上停止了()线程?,java,multithreading,threadpool,Java,Multithreading,Threadpool,我有一个库调用,比如说Descriptor.compute(分子m) 对于某些分子(库中的一个bug),此调用将永远挂起;对于某些分子,此调用将执行长时间的计算。我希望在服务器上运行计算,最好是以多线程或多处理的方式,以便可以使用所有处理器。此外,我不希望计算机在任何分子上花费的时间超过超时时间 由于compute方法既不检查isInterrupted()也不在任何地方等待,因此它不响应Thread.interrupt()调用 所以我想我需要使用Thread.stop(),它可以很好地停止这类任

我有一个库调用,比如说
Descriptor.compute(分子m)

对于某些分子(库中的一个bug),此调用将永远挂起;对于某些分子,此调用将执行长时间的计算。我希望在服务器上运行计算,最好是以多线程或多处理的方式,以便可以使用所有处理器。此外,我不希望计算机在任何分子上花费的时间超过超时时间

由于
compute
方法既不检查
isInterrupted()
也不在任何地方等待,因此它不响应
Thread.interrupt()
调用

所以我想我需要使用
Thread.stop()
,它可以很好地停止这类任务

我的问题是:是否存在能够实际停止线程的线程池?

我制作了一个简单的池,它使用
ArrayBlockingQueue
ArrayBlockingQueue
进行通信。但是,在我无法跟踪的
compute()
期间,我遇到了奇怪的
NullPointerException
s(这些异常也有null堆栈跟踪)。所以我想问的是,是否已经有了一些现有的实现,我的谷歌搜索没有带来任何成果,我发现的一切都只是
interrupt
s

谢谢你抽出时间


编辑:顺便说一下,这个库是。

在Java中没有好的方法“杀死”线程。读这本书。因此,没有任何现代API(如JDK中的ExecutorServices)会使用这种方法


您必须让这些线程检查中断和终止标志

是的,我知道。不幸的是,对于我来说,这不是一个选项,因为描述符接口是由许多类实现的。在这种情况下,可能产生一个新的JVM进程来完成这些计算就可以了。你可以杀死进程,我已经考虑过了。你知道Python的
多处理
这样简单的东西吗?或者Java中通常用于高级IPC的工具是什么?这可能值得再问一个问题。。。我想,这里有趣的部分是反馈结果的方式。谢谢。如果有人有别的想法,我会把这个问题留着。。如果从另一个线程将M设置为null,是否会强制“compute”方法抛出异常?如果没有,在“分子”中是否还有其他一些字段经常被“计算”访问并将强制执行segfault/AV?每个描述符实现的行为都不同。不幸的是,没有一个公共安全的地方可以抛出异常。“库中的bug”:虽然这可能不是短期解决方案,但为了公众利益,你应该向他们提交bug报告(如果已经存在,也可以投票支持)。