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

joh*_*ohn 1 java eclipse multithreading

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

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

  1. 使用join(这个答案有87个upvotes)并等到线程结束.
  2. 设置一个volatile标志以表示其他线程.这个答案得到了113个赞成票
  3. 很多人推荐Thread.interrupt()并稍后检查 isInterrupted
  4. 有些人建议使用像ExecutorService这样的高级API.但是该shutdownNow方法没有给出任何保证,并且依赖于该isInterrupted布尔值

但是上述两种方法都不允许立即停止线程.例如,如果程序正在运行某些程序SQL 并等待外部数据库响应,则上述所有方法都将"谦虚地等待",直到SQL完成为止.所以停止不是立竿见影的.只有SQL完成(可能需要数小时),程序才会检查isInterrupted或其他标志,然后停止

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

gre*_*449 7

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

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

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