我有个类继承了Jpanle,这个类里有自动创建线程的方法,
而我新new这个类的时候原来的线程还存在。
我不断new结果是线程只增不减
问题就出来了,原来线程还在运行,导致显示出的效果非常差劲
原来是多线程并发,我想关闭原来所有运行的线程
我有个类继承了Jpanle,这个类里有自动创建线程的方法,
而我新new这个类的时候原来的线程还存在。
我不断new结果是线程只增不减
问题就出来了,原来线程还在运行,导致显示出的效果非常差劲
原来是多线程并发,我想关闭原来所有运行的线程
首先,所谓关闭线程其实就是让Thread.run方法能正常结束,方法结束则线程会自动退出。
很多程序会在run中执行一个死循环以达到守护线程的效果,在这种情况下如果你希望线程退出,那么比较好的方式就是想办法告诉这个循环“你可以退出了”
比如:
private boolean isBreak = false;
public void run()
{
while(true){
if(isBreak ){break;}
//dosomething...
}
}
public void killThread(){
isBreak = true;
}
这种设置变量的方式是最直观的,当然,其实可以不用额外变量而使用thread.isInterrupted()方法来判定当前线程是否被中断,外部调用thread.interrupt,来告诉线程“你被中断了”
此外,如果你选择在外部调用interrupt,而你的run方法中有xxx.wait()或sleep()等方法,那么需要对InterruptedException进行处理。