简单地来说,就是有两个线程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();
}
}
添加回答
举报
0/150
提交
取消