Wait与Notify
来源:互联网 发布:中国网络电视在线直播 编辑:程序博客网 时间:2024/06/05 13:43
import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.TimeUnit;import com.afan.util.SleeepUtils;public class WaitNotify { static boolean flag = true; static Object lock = new Object(); public static void main(String[] args) { Thread waitThread = new Thread(new Wait(),"waitThread"); waitThread.start(); try { TimeUnit.SECONDS.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Thread notifyThread = new Thread(new Notify(),"notifyThread"); notifyThread.start(); } static class Wait implements Runnable{ @Override public void run() { //加锁 拥有lock的monitor synchronized (lock) { //当条件不满足时,继续wait 同时释放了lock的锁 while(flag){ try { System.out.println(Thread.currentThread()+" flag is true was" + new SimpleDateFormat("HH:mm:ss").format(new Date())); lock.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //条件满足时,完成工作 System.out.println(Thread.currentThread()+" flag is false running " + new SimpleDateFormat("HH:mm:ss").format(new Date())); } } } static class Notify implements Runnable{ @Override public void run() { //加锁 拥有lock的monitor synchronized (lock) { //获取lock的锁,然后进行通知,通知时不会释放lock的锁 //直到当前线程释放lock后,WaitThread才能从wait方法中返回 System.out.println(Thread.currentThread() + "hold lock notify " + new SimpleDateFormat("HH:mm:ss").format(new Date())); lock.notifyAll(); flag = false; SleeepUtils.second(5); } //再次加锁 synchronized (lock) { System.out.println(Thread.currentThread() +"hold lock again sleep" + new SimpleDateFormat("HH:mm:ss").format(new Date())); SleeepUtils.second(5); } } }}
阅读全文
0 0
- wait()与notify()
- java,wait与notify
- synchronized,wait 与 notify
- wait与notify方法
- java,wait与notify
- wait()与notify()/notifyAll()
- Wait与Notify
- countDownLatch、wait与notify
- Java线程wait()与notify()
- Condition 与wait和notify
- 多线程中的wait与notify
- object类 wait与notify
- 多线程synchronized、wait与notify
- notify与wait案例2
- object.wait()与object.notify()
- wait & notify
- wait()/notify()
- Wait/Notify
- QString的arg方法
- 直接修改dex破解
- MapReduce的Shuffle原理
- MySQL--操作数据表1:插入记录
- C:\Users\Administrator>net use \\dragon-nas\gyn私有云 "881017" /user:"dragon" /p ersistent:yes
- Wait与Notify
- PAT-A-1072. Gas Station (30)
- js_return 小应用
- jstl 细节操作
- 简易MySQL命令行命令
- [LeetCode] 416. Partition Equal Subset Sum
- Java反射基础学习
- 前后端项目的糅合模式mashup
- DevOps概述