如果Java中的线程停止是如此尴尬,Eclipse如何设法如此快速地停止线程?

时间:2016-07-22 14:24:31

标签: java eclipse multithreading

如果这个问题听起来很冒昧,我会提前道歉。我对此很新。所以这就是它。 。 。

我一直在研究" java线程停止"问题一阵子。我在stackoverflow上阅读了很多文章,他们中的大多数都得出结论,在java中线程停止非常尴尬。一些好的方法包括:

  1. 使用jointhis answer得到87个upvotes)并等待线程结束。
  2. 设置volatile标志以表示其他线程。 This answer获得了113个赞成票。
  3. 许多人建议Thread.interrupt(),然后检查isInterrupted
  4. 有些人建议使用像ExecutorService这样的高级API。但是shutdownNow方法没有给出任何保证,并依赖于isInterrupted boolean
  5. 但是上述两种方法都不允许立即停止线程。例如,如果一个程序正在运行一些SQL并等待外部数据库响应,那么以上所有方法都会等待"谦虚等待"直到SQL完成。所以停止不是立竿见影的。只有当SQL完成(可能需要数小时)时,程序才会检查isInterrupted或其他标志,然后停止

    这是一个妙语。 。 我知道Eclipse是根据this stackoverflow的答案用java编写的。每当我点击红色停止按钮时,Eclipse将立即停止我的应用程序。我认为它不使用Thread.stop,因为它已被弃用。但我无法使用stackoverflow上推荐的那些方法。 Eclipse如何设法如此快速地停止线程?

1 个答案:

答案 0 :(得分:7)

当您从Eclipse中运行Java程序时,将在新进程中创建一个全新的JVM来运行该程序。进程与线程不是一回事。

在Eclipse中,该过程由java.lang.Process类表示。当你停止程序时,Eclipse会调用destroy() Process方法。

所以Eclipse正在使用它与线程无关。