标签:lan ext tee trace 通知 代码块 mon sys thread
这里先讲述 大道扬帆 里的一个小故事
话说男猪脚扬帆驾驭一叶扁舟在碧海上飘荡。
一只木浆在扬帆手里上下翻飞,惊起了层层涟漪。
“把帆扬起来吧,也省些力气。”夏夏道。
“海风还没到(signal),现在扬帆还早。我现在先眯会,等到(wait)大风起来的时候,才能借风之力遨游九天之上。”
/**
* wait和notify需要在同步方法或者同步代码块中使用,
* 否则会报 java.lang.IllegalMonitorStateException
* @author Administrator
*
*/
public class 远航 {
public static void main(String[] args) throws InterruptedException {
Object 海风将起 = new Object();
扬帆 猪脚扬帆 = new 扬帆(海风将起);
海风 外力海风 = new 海风(海风将起);
猪脚扬帆.start(); // 猪脚先起个线程眯一会。
外力海风.start();
/**
* 海风迟迟不来,还是让男猪脚卖力划吧
*/
// 猪脚扬帆.interrupt();
}
}
public class 扬帆 extends Thread {
private Object 海风将起;
public 扬帆(Object 海风将起) {
this.海风将起 = 海风将起;
}
@Override
public void run() {
try {
synchronized (海风将起) {
海风将起.wait();
}
System.err.println("扬帆: 海风来了,终于可以歇会了!");
} catch (InterruptedException e) {
e.printStackTrace();
System.err.println("扬帆: 不用等海风了");
}
}
}
public class 海风 extends Thread {
private Object 海风将起;
public 海风(Object 海风将起) {
this.海风将起 = 海风将起;
}
@Override
public void run() {
System.err.println("海风: 还没来,你们再等等吧......");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.err.println("海风: 来了,通知扬帆......");
synchronized (海风将起) {
海风将起.notify(); // 海风将起.notifyAll()通知扬帆和夏夏;
}
}
}
标签:lan ext tee trace 通知 代码块 mon sys thread
原文地址:http://blog.51cto.com/13855604/2171686