我正在开发一款分析应用。在Java中。顶部我有一个具有START和STOP Buttons的GUI.On单击Start我创建一个Thread,其内部的RUN方法我调用一个API方法,在内部创建一个Thread.i.e。
单击“开始”----->生成线程---->在此线程的RUN方法中,我使用API cal在内部创建线程...
现在,我想要的是当我点击STOP GUI按钮时,API调用创建的内部线程也应该死...
我怎样才能实现?
由于
答案 0 :(得分:2)
您必须为线程类实现一些逻辑。首先,他们需要一些“杀戮开关” - 你不能(不应该!!)从外面阻止它们。我们通常在线程实例上定义并设置一个标志,以便它知道何时必须终止。
然后,我们没有线程“层次结构”。线程实例将需要其自己的子线程列表,如果它(父)接收到停止信号,它将必须向其子节点发送相同的信号。
public abstract class MyThread extends Thread {
private List<MyThread> children = new ArrayList<MyThread>();
private boolean stopNow = false; // <- this is the stop flag
public void stopNow() {
for (MyThread thread:children) {
thread.stopNow();
}
stopNow = true;
}
}
(这不会使线程实际停止,我们必须“监视”stopNow
方法中的run
标志。