package _7wait和notify;// wait()
// notify()
// notifyAll();// 通过调用某对象的wait()方法能让当前线程阻塞
// 通过调用某对象的notify()方法能唤醒一个正在等待该对象的线程
// 通过调用某对象的notifyAll()能唤醒所有正在等待该对象的线程public class TestDemo {public static void main(String[] args) throws InterruptedException {// TODO Auto-generated method stubObject obj = new Object();// 母亲做馒头线程Thread t = new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stub// 做馒头System.out.println("母亲开始做馒头");try {Thread.sleep(5000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 做完馒头发通知synchronized (obj) {System.out.println("母亲: 馒头做好了,吃吧");obj.notify();// 通知一个等在obj上的一个线程继续运行//obj.notifyAll();// 通知所有等在Obj上的线程继续运行}}});t.start();Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubsynchronized (obj) {System.out.println("大明:我要吃馒头");try {obj.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 进入阻塞状态,直到其他线程发通知System.out.println("大明:开始吃馒头");}}});t2.start();synchronized (obj) {System.out.println("小明:我要吃馒头");obj.wait();// 进入阻塞状态,直到其他线程发通知System.out.println("小明:开始吃馒头");}}}

wait和notify的用法相关推荐

  1. Object.wait()与Object.notify()的用法

    2019独角兽企业重金招聘Python工程师标准>>> wait.notify和notifyAll方法是Object类的final native方法.所以这些方法不能被子类重写 vo ...

  2. 浅谈一下线程中synchronized块、wait,notify的用法

    首先我们来了解一下syncronized块和锁运行的基本原理,我们知道syncronized块的运行是依赖于锁而进行的. 假如把一个对象比喻成一个内部有很多小房子的大房子,有一些小房子没有门,人们随便 ...

  3. golang 中 signal 包的 Notify 函数用法介绍

    函数声明为: func Notify(c chan<- os.Signal, sig ...os.Signal) 官方描述: Notify函数让signal包将输入信号转发到c.如果没有列出要传 ...

  4. 多线程——Condition的介绍以及用法

    之前总结了wait和notify的用法,今天总结一下condition的用法. Condition介绍: 关键字synchronize可以与wait()和nitify()方法相结合实现实现等待/通知模 ...

  5. java中我爱你_Java线程学习(转)

    编写具有多线程能力的程序经常会用到的方法有: run(),start(),wait(),notify(),notifyAll(),sleep(),yield(),join() 还有一个重要的关键字:s ...

  6. 多线程小抄集(新编一)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  7. Java多线程知识小抄集(一)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  8. 并发运行的最佳实践_并发最佳实践

    并发运行的最佳实践 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. 它将指导 ...

  9. 深入探索多线程优化方法

    前言 什么是线程的概念我就不在介绍,不懂的自行百度,我想百分之九十九的人都是知道的,至于多线程,通俗的就是有很多的线程在一起工作从而完成某一件事,从而提升效率.这就是使用多线程的好处之一,举个列子,一 ...

最新文章

  1. JS中的this对象详解
  2. tempfile PermissionError: [Errno 13] Permission denied
  3. Qt控制台工程不能调试问题
  4. 文思创新深圳招聘biztalk
  5. 三个activity之间跳转 数据传递_第二百四十二回:Android中Fragment之间的数据传递概述...
  6. 禁用浏览器滚动条的解决方案
  7. Nginx安装及配置简介
  8. x1c 2017 安装mint18的坑——grub2
  9. 剖析Caffe源码之Net类变量
  10. 360 支持linux版本下载地址,360安全浏览器国产稳定版本发布,提供deb软件包下载,附介绍...
  11. Codeigniter3学习笔记三(创建类库及使用原生类库)
  12. Matlab2016a安装教程
  13. Windows 适配 Apple Magic TrackPad2
  14. 有监督学习与无监督学习的区别
  15. w ndows10图标,Win10桌面图标没了怎么办?Win10桌面快捷方式消失了解决方法
  16. APP运营推广:新APP建设之后该怎么做好品牌运营?
  17. 树莓派红外火焰传感器
  18. 原生javascript手风琴图片切换案例
  19. AI+MR遇冷后回暖,国内公司抢先卡位仍有风险待解
  20. debian 笔记本 准系统 RTL8822BE 8723 8192 8188 8168 8111 8107 8821-22 等PCIE 无线网卡蓝牙驱动安装

热门文章

  1. InstallShield 2012 Spring新功能试用(6): InstallScript工程支持64位组件(Components)...
  2. POJ - 3190
  3. Codeforces Beta Round #7 C. Line 扩展欧几里德
  4. php去掉字符串的最后一个字符的方法
  5. 使用arguments对象模拟函数重载
  6. C#中DataGradView控件的常用操作
  7. 10个保持注意力的技巧
  8. CentOS 7中 rsync 备份数据使用实例
  9. 误删除MySQL数据库表的ibd文件怎么办
  10. hbase小版本升级