【发布时间】:2015-05-28 13:29:13
【问题描述】:
我正在创建一个程序并第一次详细使用线程并陷入困境。请帮助我。 我有一个处于等待状态的线程。现在在某些情况下我想杀死或唤醒线程并从另一个类恢复。为此我正在保存线程对象。我不知道该怎么做。我试过了通知线程但出现异常。这是我的代码:
第一类:
Thread t= new Thread(new Runnable() {
@Override
public void run() {
try{
Thread.sleep(VariableClass.THREAD_WAIT_SECONDS);
if(message !=null)
message_status = message.getStatus();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
//do other stuff and save the thread object
VariableClass.threads.remove(message.getUniqueId());
}
});
t.start();
VariableClass.threads.put(pojo.getUniqueId(),t);
二类:
Thread t =VariableClass.threads.get(tempId);
t.notify();
我只想恢复或终止线程。
【问题讨论】:
-
我猜你应该使用
t.interrupt() -
这可能是 XY 问题的一个实例 (meta.stackexchange.com/questions/66377/what-is-the-xy-problem) 你真正的目标是什么?如果您想将消息从一个线程传递到另一个线程,那么也许您应该使用某种队列(例如,
java.util.concurrent.SynchronousQueue或 `java.util.concurrent.BlockingQueue)。
标签: java multithreading notify kill-process