package com.back;
/**
* @author 作者 E-mail: 505522915@qq.com
* @version
* 创建时间:2019年3月25日 下午8:11:17
* 类说明:
*/
public class Printer2 {
private int index = 1; // 用于统计第几次打印
public synchronized void print(int number) { //number线程
while(index % 3 == 0) {
try {
super.wait(); //假如设定打印数子的线程名叫number线程
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
System.out.println(number);
index++;
super.notifyAll(); //唤醒在printer这个对象上所有的等待的线程
}
}
public synchronized void print(char letter) { //letter线程
while(index % 3 != 0) {
try {
super.wait(); //假如设定打印字符的线程叫letter线程
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
System.out.println("" + letter);
index++;
super.notifyAll();
}
}
}
老师,我不太了解多线程的线程间通信的3个方法
老师,我想请教下,当letter线程调用super.wait();的时候,是letter线程调用父类的方法,letter线程进行等待吗?
还有,super.notifyAll();是letter线程唤醒Printer这个对象上的所有的等待的线程(所有的等待的线程:指的是letter和number线程还是只是number线程?因为前面letter线程已经调用了wait()方法,让letter线程自己休眠了)
在线等!急