线程A是一个while循环的线程,线程B的代码是这样
System.out.println(
"close"
);
System.out.println(ThreadA.isAlive());
if
(ThreadA.isAlive()) {
System.out.println(
"*"
+ ThreadA.isInterrupted());
ThreadA.interrupt();
}
System.out.println(ThreadA.isAlive());
然后执行结果是这样的。。。
线程结束用thread.stop(tread你的线程名)线程的话,一般都是尽量让他执行结束,写个方法让他结束,或者让他挂起,尽量少用直接结束,因为直接结束可能会引起不可估量的错误。
一般的做法是设置一个flag,一个public的赋值函数
外部线程给运行线程的flag赋值,资源下载运行线程在内部循环中,先判断flag值,为ture则退出
你的A线程是怎么while循环的?
是while(!isInterrupted()) 循环吗?还是while(true)循环?是while(true)的话,你是怎么控制break的?
是while(true)这种,参数是一个全局变量。。。我发现问题好像出在是同时运行了2个线程A,其中一个线程达成条件把全局变量置为false后,其他的线程不能正常退出
那请问一下,我把这个flag设置成全局变量,然后两个线程A都以这个flag为条件进行循环,怎么在当其中一个线程把flag置为false后另一个线程立刻结束。。。
都使用while(flag)循环 ,会把循环体内的代码执行完停止
设置全局的不行,线程还是会读旧值,得volatile一下