哈哈,楼主,我想清楚了, 运行t.start()时, flag=false后, 可能cpu会一直运行这个线程,然后一直在判断, 没有给t2.start()执行的机会, 这样就会出现一种等待的情况, 你在两个if判断语句后都加上
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
让线程在修改flag值后,都睡眠0.1s,这样另外一个线程肯定会执行,不会出现一只等待的情况了,我刚刚试过了,没问题了 |