简单地来说,就是有两个线程A和B,在main函数里面先后启动他们
线程A的run函数里面有一个while循环,循环体里主要是一句if,判断的是一个存在于A里面的一个布尔变量boo,如果是true就输出一句话,但boo在初始化的时候就已经设置为false
线程B在接收了一次输入之后,再把线程A里面的boo改成true,仅此而已。
现在问题来了,线程A始终没有输出,相当于线程A暂停了(线程A并没有被杀死),求解呀...
更加奇怪的是,如果使用debug模式,程序是可以正常运行的,这又是为什么呢?
代码如下:
public class ThreadA extends Thread{ public boolean boo; public ThreadA() { boo = false; } public void run() { while (true) { if (boo) { System.out.println("boo equals ture now!"); boo = false; } } } } public class ThreadB extends Thread{ private ThreadA a; public ThreadB(ThreadA a) { this.a = a; } public void run() { try { int num = System.in.read(); } catch (IOException e) { e.printStackTrace(); } a.boo = true; } } public class MainFunc { public static void main(String[] args) { ThreadA a = new ThreadA(); ThreadB b = new ThreadB(a); a.start(); b.start(); } }
倚天杖
慕妹3146593
手掌心
相关分类