这是我在面试中遇到的一个填空题,关于线程等待唤醒的一个小demo ,回来之后将这个demo仔细研究了一下,做个记录
public class MyTest implements Runnable {
public String name;// 输出内容
public Object lock;// 锁
public int count = 5;// 定义输出次数
public MyTest(String name, Object lock) {
super();
this.name = name;
this.lock = lock;
}
@Override
public void run() {
synchronized (lock) {
while (count-- > 0) {
try {
lock.notify();// 唤醒被这个对象锁中的等待的另一个线程
System.err.print(name);
lock.wait();
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
}
}
public static void main(String[] args) {
Object lock = new Object();//两个输出的线程使用同一个对象
Thread t1 = new Thread(new MyTest("A", lock));
Thread t2 = new Thread(new MyTest("B", lock));
t1.start();
t2.start();
}
}
输出显示为