我有2个类,fe Class1和Class2
让我说我在Class1中这样做:
Class2 class2 = new Class2();
Thread thread = new Thread(class2);
thread.start();
...
thread.stop();
现在我想在我的线程停止时检查Class2的run方法,我该怎么做? 因此,当class1停止线程时,我想向class2发出一些警告它停止然后做一些事情
答案 0 :(得分:5)
请勿使用stop()
,请使用interrupt()
。
如果你服从第1点,你可以使用Class2
:
public void run() {
if(Thread.currentThread().isInterrupted())
//somebody interrupted me, ouch!
}
答案 1 :(得分:2)
首先,不要使用thread.stop(),因为 已弃用 。因此,取决于这些方法是不可取的。 第二:有多种解决方法,即基本上试图关闭或沟通。
Thread.currentThread().isInterrupted()
通常,中断主要用于通知其他人请求它关闭。 (Brian Goetz“Concurrency in Practice”有一个很好的章节)。答案 2 :(得分:0)
一旦线程“停止”,这意味着run
方法Class2
已退出。因此,没有办法让run
方法中的代码执行after
线程已停止。
您可以侦听中断并处理该中断,但此处理将在线程仍在运行时完成。
您可以在Class2
中使用不同的方法,一旦线程停止,您就可以从Class1
调用。
答案 3 :(得分:0)
你的class2应该得到一个InterruptedException,就是这样。 BTW http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html#stop()
出于兴趣,你想要达到的目标是什么?