剛剛才知道,原來Java的線程是不能重啟的,也就是說,當線程的run()方法執行到最后一行,退出之后,這個線程就結束了,不能再通過start()方法重啟啟動這個線程,只能重新構造一個線程對象,再調用其start()方法來啟動,但這個對象和原來那個對象已經不同了。
為了實現某個線程對象的“重啟”功能,可以在它的run()方法的最外層加上一個循環語句:
1 public void run(){
2 while(!stop){
3 //do something
4 }
5 }
這樣,只要stop不為true,run()方法就不會結束,不斷地“重啟”。
如果run()方法里面還有一個循環,那么就要兩個停止標志:
1 public void run(){
2 while(!stop){
3 //do something
4 while(!stop && !restart){
5 //do other thing
6 }
7 }
8 }
9
這樣,如果需要“重啟”線程,只要把restart設為true即可,如果要退出線程,只要把stop設為true即可。