刚刚才知道,原来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即可。