解释

wait/notify必须配合synchronized使用

demo

class NotifyStop2 {

private final Object lock = new Object();

public void add(String s) throws InterruptedException {

Thread.sleep(1000);

synchronized (lock) {

System.out.println("add notify qian");

//唤醒其他线程,但是其他线程不能执行,因为lock这把锁,还是被我占用的

lock.notify();

System.out.println("add notify hou");

try {

Thread.sleep(5000);

System.out.println("add wait qian");

//释放lock锁,其他线程可以执行了【使用wait释放锁,或者方法执行完毕,也是释放锁】

lock.wait();

System.out.println("add wait hou");

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

public void get() throws InterruptedException {

synchronized (lock) {

try {

System.out.println("get wait qian");

lock.wait();

System.out.println("get wait hou");

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("get notify qian");

lock.notify();

Thread.sleep(5000);

System.out.println("get notify hou");

}

}

public static void main(String[] args) {

NotifyStop2 notifyStop2 = new NotifyStop2(); //特别注意使用同一个对象进行调用

new Thread(() -> {

try {

notifyStop2.add("abc");

} catch (InterruptedException e) {

e.printStackTrace();

}

}, "t1").start();

new Thread(() -> {

try {

notifyStop2.get();

} catch (InterruptedException e) {

e.printStackTrace();

}

}, "t2").start();

}

}

java wait abc_java----wait/notify相关推荐

  1. Java的wait()、notify()学习三部曲之一:JVM源码分析

    原文链接:https://blog.csdn.net/boling_cavalry/article/details/77793224 综述 Java的wait().notify()学习三部曲由三篇文章 ...

  2. Java 多线程编程之 notify notifyAll wait lock unlock 算法

    写了一个类来理解java 同步机制的算法.这个类并不适合实战,而仅仅是算法层面进行理解. package multithread; import java.util.ArrayList;import ...

  3. java中wait和notify的虚假唤醒问题

    前言 本篇博客来自 https://www.cnblogs.com/clover-forever/p/12616869.html 自己在此记录一下,方便日后复习. 虚假唤醒的概念 jdk官方文档解释: ...

  4. java+synchro_synchrozied,wait()与notify()的理解

    public class TestWait{ private List list = new ArrayList(); public TestWait(){ } public synchronized ...

  5. Java 多线程 —— wait 与 notify

    引言 认识一下 Object 类中的两个和多线程有关的方法:wait 和 notify. wait,当前线程进入 WAITING 状态,释放锁资源. notify,唤醒等待中的线程,不释放锁资源. 一 ...

  6. java 中的wait notify

    Wait&Notify 以下内容来自<Java并发编程的艺术>,4.3.2 等待/通知机制 线程A等待某一个变量_v_满足某个条件,而线程B会在某个不确定的时刻修改_v_,以使其满 ...

  7. Java多线程中wait, notify and notifyAll的使用

    本文为翻译文章,原文地址:http://www.journaldev.com/1037/java-thread-wait-notify-and-notifyall-example 在Java的Obje ...

  8. java线程学习之notify方法和notifyAll方法

    notify(通知)方法,会将等待队列中的一个线程取出.比如obj.notify();那么obj的等待队列中就会有一个线程选中并且唤醒,然后被唤醒的队列就会退出等待队列.活跃线程调用等待队列中的线程时 ...

  9. java thread.notify_Java Thread notify()方法

    Thread类的notify()方法用于唤醒单个线程. 此方法仅为一个等待特定对象的线程提供通知. 如果使用notify()方法并且有多个线程正在等待通知,那么只有一个线程获得通知,而剩下的线程必须等 ...

  10. JAVA——利用wait和notify实现生产者和消费者

    经典的消费者和生产者的的实现: 注意事项: 1:在循环里面用wait(),因为当线程获得了锁,但是有可能还没有满足其他条件: 2:公用的缓冲池要用锁机制: 1 package demo; 2 3 im ...

最新文章

  1. LCS最长公共子序列和LIS最长上升子序列——例题剖析
  2. 把集成测试和单元测试写一起是一种什么体验?
  3. java判断栈空_java中栈的应用-判断分隔符是否合理
  4. (转)【前端模板之路】一、重构的兄弟说:我才不想看你的代码!把HTML给我交出来!...
  5. struc,union,class的内存对齐方式
  6. 95-130-502-源码-source-ElasticSearch相关-ElasticSearch connector
  7. python写一个crm系统_用Python打造一个CRM系统(四)
  8. 熊猫分发_熊猫下降列和行
  9. es6.0 java,es6.0.0源码idea启动问题
  10. 基于OHCI的USB主机 —— UFI读扇区代码
  11. 微信小程序添加icon图标教程
  12. Java实现熵值法计算_熵值法确定权重的步骤及适用范围
  13. excel根据空格把数据分列
  14. 【Python 脚本报错】AttributeError:‘module‘ has no attribute ‘xxx‘的解决方法
  15. Android调用系统相机拍摄视频以及获取缩略图
  16. 融云通讯服务器,发送图片到自己的服务器
  17. ubuntu18.04 安装Adobe Flash Player
  18. c调用python第三方包_cbillington_Python包维护者_第三方库作者_PyPI项目模块Package - Python中文网...
  19. Java基础 DAY14
  20. 恶性淋巴瘤及其实验诊断题库【1】

热门文章

  1. [置顶] 当我拿车钥匙的时候,刚交的女朋友跑了。。。
  2. 从零开始学Go之接口(一):接口
  3. AEC、AGC、ANS在视音频会议中的作用?
  4. linux下解压缩文件中文乱码问题的解决
  5. 项目微管理29 - 转正
  6. 【VS开发】【智能语音处理】Windows下麦克风语音采集
  7. PL/SQL第五章 Order by排序
  8. 浅谈《think in java》:一 对象导论总结
  9. 云计算安全:技术与应用
  10. fprintf、printf、sprintf、fscanf、scanf、sscanf 格式化输入输出