【发布时间】:2018-01-08 07:08:51
【问题描述】:
TL;DR 当我知道它没有与其他任何东西同步时,它可以用于 Java 线程吗?
首先我将描述我的困境。我有一个服务来处理来自应用程序的请求(都在同一台机器上)。该服务是单线程的。在某些情况下,回答请求可能需要一段时间。在这些情况下,我想暂停请求。 遗憾的是,在所述服务内部轮询中断非常复杂,因为它具有相当广泛的算法逻辑,并且会导致大量丑陋的代码重写。
将服务视为调用可怕算法库的外观。 目前该服务只是根据请求调用库,我希望它启动一个线程,如果计算时间过长,它会超时。 我打算只使用一个额外的线程。
我读过How do you kill a thread in Java? 和https://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html
根据这些,由于失去同步,不推荐停止线程。但是,我的服务基本上是单线程的,因此不需要同步。
在这种情况下,我可以停止线程吗?我错过了一些内部 java 的东西吗?
谢谢!
【问题讨论】:
-
能分享一下代码吗?
-
是单线程的,但是要停止线程?那么这是否意味着您要退出该流程?
-
@egorlitvinenko 嗯...我不认为我可以。但是,我认为您在这里并不需要它。将服务想象成一个包含多种方法的库的外观,这些方法都是算法和可怕的。
-
@matt 目前,该服务只是运行一些代码。我希望服务在不同的线程上运行代码,如果运行时间过长则终止线程
-
您可以做的一件事是启动另一个进程,而不是启动另一个线程。然后,您可以完全控制启动或停止该过程。这基本上就是您描述生成的线程的方式。
标签: java multithreading synchronization java-threads