我在我的代码中使用了三个线程。当我按下“停止”按钮时它应该停止并且“启动”按钮应该恢复它们。我的代码是:
private void jButton_stopActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
boolean result = value;
if(result){
t.stop();
timer.stop();
timer2.stop();
value = false;
jButton_stop.setText("Start");
}
else{
t.resume();
timer.resume();
timer2.resume();
value = true;
jButton_stop.setText("Stop");
}
但是当我点击“停止”按钮时,所有线程都完全停止,但是当我按下“开始”按钮时线程没有恢复。为什么?请帮帮我。
答案 0 :(得分:4)
考虑t
是Thread
的实例:
不止一次启动线程永远不合法。 特别是,线程可能不是 完成执行后重新启动。
来自http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
而且,Thread.stop()
已被弃用。
线程本身应检查是否需要完成,例如正在检查的boolean run
变量,或使用对象进行线程通信。
答案 1 :(得分:1)
您可以根据某个布尔值使其保持等待状态,例如:
public void run() {
try {
for(int i = 15; i > 0; i--) {
System.out.println(name + ": " + i);
Thread.sleep(200);
synchronized(this) {
while(suspendFlag) {
wait();
}
}
}
} catch (InterruptedException e) {
System.out.println(name + " interrupted.");
}
System.out.println(name + " exiting.");
}
您可以在此处更改线程外的suspendFlag状态。见here