本文共 1468 字,大约阅读时间需要 4 分钟。
比如,必须先2后1。
wait与notify实现
static final Object lock = new Object();//表示t2是否运行过static boolean t2runned = false;public static void main(String[] args) { Thread t1 = new Thread(() -> { synchronized (lock) { while (!t2runned) { try { locak.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } log.debug("1"); } },"t1"); Thread t2 = new Thread(() -> { synchronized (lock) { log.debug("2"); t2runned = true; lock.notify(); } },"t2"); t1.start(); t2.start();}
park与unpark实现
wait与notify实现
/*输出内容 等待标记 下一个标记a 1 2b 2 3c 3 1*/class WaitNotify { //打印 public void print(String str,int waitFlag, int nextFlag) { synchronized(this) { while(flag != waitFlag) { try { this.wait(); } catch (InterruptedExcepton e) { e.printStackTrace(); } } System.out.print(str); flag = nextFlag; this.notifyAll(); } } //等待标记 private int flag; //循环次数 private int loopNumber; public WaitNotify(int flag,int loopNumber) { this.flag = flag; this.loopNumber = loopNumber; }}
await与singal实现
park与unpark实现
转载地址:http://sxlq.baihongyu.com/