3
我做了一個倒數計時器,並且假設「停止」按鈕停止倒計時並重置文本字段。如何停止線程?
class Count implements Runnable {
private Boolean timeToQuit=false;
public void run() {
while(!timeToQuit) {
int h = Integer.parseInt(tHrs.getText());
int m = Integer.parseInt(tMins.getText());
int s = Integer.parseInt(tSec.getText());
while(s>=0) {
try {
Thread.sleep(1000);
}
catch(InterruptedException ie){}
if(s == 0) {
m--;
s=60;
if(m == -1) {
h--;
m=59;
tHrs.setText(Integer.toString(h));
}
tMins.setText(Integer.toString(m));
}
s--;
tSec.setText(Integer.toString(s));
}
}
tHrs.setText("0");
tMins.setText("0");
tSec.setText("0");
}
public void stopRunning() {
timeToQuit = true;
}
}
,我叫stopRunning()
按下「停止」按鈕時。它不會工作。
另外,我打電話給stopRunning()
嗎?
public void actionPerformed(ActionEvent ae)
{
Count cnt = new Count();
Thread t1 = new Thread(cnt);
Object source = ae.getSource();
if (source == bStart)
{
t1.start();
}
else if (source == bStop)
{
cnt.stopRunning();
}
}
如何使用Thread.interrupt()? –
@RahulTripathi是的,人們可以這樣做,但由於OP的代碼每秒都會檢查一次標誌,所有這些都可以爲您節省時間。 – dasblinkenlight
得到了......實際上我只是想知道在這裏使用中斷是否合適..謝謝! –