类似一 一个读写锁的问题,代码如下,目的是先输出10次A, 再输出十次B,结果是有时候运行正常,大部分时候线程B无法被唤醒。
public class Test {
public static void main(String[] args) {
Object lock = new Object();
new A(lock).start();
new B(lock).start();
}
}
class A extends Thread{
Object lock;
public A(Object lock){
this.lock = lock;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Im a");
}
synchronized (lock) {
lock.notify();
}
}
}
class B extends Thread{
Object lock;
public B(Object lock){
this.lock = lock;
}