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