我正在开发一个分析应用程序。在Java.At顶部我有一个图形用户界面有START和STOP Buttons.On点击开始我创建一个线程内的RUN方法,我称之为内部创建一个Thread.i.e的API方法。多线程 - 杀死线程及其所有子进程
在单击“开始” ----->线程是催生---->在该线程的run方法我用它创建内部线程的CAL API ...
现在,我想要的是,当我点击STOP GUI按钮,由API调用创建的内部线程也应该死..
我怎么能实现?
谢谢
我正在开发一个分析应用程序。在Java.At顶部我有一个图形用户界面有START和STOP Buttons.On点击开始我创建一个线程内的RUN方法,我称之为内部创建一个Thread.i.e的API方法。多线程 - 杀死线程及其所有子进程
在单击“开始” ----->线程是催生---->在该线程的run方法我用它创建内部线程的CAL API ...
现在,我想要的是,当我点击STOP GUI按钮,由API调用创建的内部线程也应该死..
我怎么能实现?
谢谢
你必须实现一些逻辑的线程类。首先,他们需要一些“杀人开关” - 你不能(不应该!!)阻止他们从外面。我们通常在线程实例上定义并设置一个标志,以便它知道何时必须终止。
然后,我们没有线程“层次结构”。一个线程实例需要自己的子线程列表,如果它(父)接收到停止信号,它将不得不向其子节点发送相同的信号。
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;
}
}
(这不会让一个线程真正停止,我们将不得不在run
法“监视”的stopNow
标志)。
但我的问题是,我无法获得对该线程的引用,它是内部生成的通过API调用。 – nikel 2012-03-22 08:47:32
那真的是一个问题。 – 2012-03-22 08:59:05
线程做了什么,在API调用中传递了什么?也许你可以改变一些会隐藏'隐藏'的内部线程以除去/失败的内容。 – 2012-03-22 09:04:46
API是否提供了任何杀死/停止线程的方法? – 2012-03-22 08:52:37
Naah,我不这么认为... – nikel 2012-03-22 08:59:12
是的,我得到了一个显式线程关闭方法,所有内部线程:) – nikel 2012-03-22 15:35:50