【发布时间】:2012-06-13 17:16:29
【问题描述】:
我正在尝试的代码
public void killJob(String thread_id)throws RemoteException{
Thread t1 = new Thread(a);
t1.suspend();
}
我们如何根据线程的 id 挂起/暂停线程? Thread.suspend 已被弃用,必须有一些替代方案来实现这一点。 我有线程 ID,我想挂起并终止线程。
编辑:我用过这个。
AcQueryExecutor a=new AcQueryExecutor(thread_id_id);
Thread t1 = new Thread(a);
t1.interrupt();
while (t1.isInterrupted()) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
t1.interrupt();
return;
}
}
但我无法停止此线程。
【问题讨论】:
-
哦,我明白了,您添加了一个问题。您没有将
isInterrupted()检查放在主线程中。你把它放在AcQueryExecutor代码里面。AcQueryExecutor线程应该检查它自己的线程(本身)是否已被中断。调用者中的while循环永远不应运行,因为在您刚刚调用t1.interrupt()之后,t1.interrupted()将始终为真。 -
我已经编辑了我的答案以使其更清楚。很抱歉造成混乱。
标签: java multithreading