notify()唤醒线程,不会立即释放锁对象,需要等到当前同步代码块都执行完后才能释放锁对象

public class Test3 {public static void main(String[] args) {List<String> list = new ArrayList<>();Thread thread1 = new Thread(new Runnable() {@Overridepublic void run() {synchronized (list) {if (list.size() != 5) {System.out.println("线程1开始等待" + System.currentTimeMillis());try {list.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("线程1被唤醒:" + System.currentTimeMillis());}}}}) {};Thread thread2 = new Thread(new Runnable() {@Overridepublic void run() {synchronized (list) {for (int i = 0; i < 10; i++) {list.add("data" + i);System.out.println("线程2添加第" + i + "个数据");if (list.size() == 5) {list.notify();System.out.println("线程2已经发现唤醒通知");}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}}) {};thread1.start();try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}thread2.start();}
}

notify()唤醒线程,不会立即释放锁对象,需要等到当前同步代码块都执行完后才能释放锁对象相关推荐

  1. 存储过程没有执行完后没有释放锁_【大厂面试07期】说一说你对synchronized锁的理解?...

    PS:本文已收录到1.3 K+ Star 数的开源项目-<大厂面试指北>,如果想要了解更多,可以看一看,项目地址如下: https://github.com/NotFound9/inter ...

  2. 理解c函数执行完后,释放内存

    在C语言中,函数仅仅是一个小的功能块,函数执行完后(也就是函数功能完成),会根据调用约定来释放,该执行函数所占用的内存资源.这里的资源就是执行该函数所占用的栈内存.当函数执行完后仅仅就是释放该函数所用 ...

  3. 存储过程没有执行完后没有释放锁_面试必问---synchronized实现原理及锁升级过程你懂吗?...

    synchronized实现原理及锁升级过程 前言: synchronized是Java内置的机制,是JVM层面的,而Lock则是接口,是JDK层面的 尽管最初synchronized的性能效率比较差 ...

  4. 6※、线程同步、同步锁、同步代码块的使用、同步锁释放的时机、ReentrantLock可重入锁、公平锁与非公平锁的区别、什么是死锁、线程间的通信(生产者和消费者模式)

    线程锁 1.※线程的同步:(要确保对象锁是一致的) 1.未使用同步锁的抢票 2.使用了同步锁的抢票 3.线程-同步代码块的使用 4.同步方法和代码块的区别 5.同步锁释放的时机 练习:多线程生产手机 ...

  5. 线程执行完之后会释放吗_java多线程并发:CAS+AQS+HashMap+volatile+ThreadLocal,乐分享...

    CyclicBarrier.CountDownLatch.Semaphore 的用法 CountDownLatch(线程计数器 ) CountDownLatch 类位于 java.util.concu ...

  6. 黑马毕向东Java课程笔记(day11):多线程(第一部分)——进程与线程+线程创建+线程安全与同步代码块+同步锁/死锁

    多线程好文:添加链接描述 锁机制:synchronized.Lock.Condition.volatile(原子性可见性)--参考添加链接描述 1.进程与线程概述   首先,对于CPU执行每一个程序, ...

  7. java 线程 wait 一定要同步_java中使用wait就得使用同步锁,而且2个线程必须都使用同步代码块,否则就会异常...

    标签: 标题已经说明,子线程wai()时候默认的锁不是同步代码块的锁,因此wai时候显示的指明锁,现在解释看code: public class Test { //staticboolean flag ...

  8. java new一个线程执行完后会自动销毁吗_Java基础总结,超级全的面试题

    1. static关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是 static 的方法?是否可以在 static 环境中访问非static 变量? stat ...

  9. date对象加十分钟_一张图讲解对象锁和关键字synchronized修饰方法(代码块)

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 每个对象在出生的时候就有一把钥匙(监视器Monitor),那么被synchronized 修饰的方法相当于给方法加了一个锁 ...

最新文章

  1. 深度学习调参体验(一)
  2. Windows Server 2008 多元密码策略之ADSIEDIT
  3. 【控制】盖尔圆盘定理
  4. MATLAB table数据结构 再篇
  5. spring 的MAVEN配置
  6. 为什么大部分程序员看不起PHP这门语言?
  7. 收藏一些效果炫酷的可视化网站
  8. 计算基因组学需要计算机知识吗,生物信息学——计算基因组学的一些参考书
  9. python忠告_学习Python一段时间,老司机给上路新手的3点忠告!
  10. bzoj 1008: [HNOI2008]越狱
  11. 前后端分离的思考与实践(一)
  12. 允许使用抽象类类型 isearchboxinfo 的对象_Java面向对象之final、abstract抽象、和变量生命周期...
  13. 32怎么通过一个按键实现不同工作模式_罗技G604鼠标为设计师而生,15个可编程按键玩转Adobe软件!...
  14. hive sql列转行
  15. 1.1 半导体基础知识
  16. Python numpy函数:shape用法
  17. 【Kubernetes学习笔记】-kubeadm 手动搭建kubernetes 集群
  18. visual studio 2017 安装离线MSDN
  19. 属性动画Android动画,Android动画(三)属性动画Animator与Interpolator
  20. 骨传导耳机对耳朵好不好、不伤耳的骨传导耳机推荐

热门文章

  1. oracle-备份工具exp-imp
  2. Android新闻案例clientserver达到,完全自己的新闻节目平台
  3. PowerShell实现批量收集SCVMM中虚拟机IP-续
  4. Mysql日期函数使用大全
  5. Linux包管理速查表
  6. 允許Linux的snmp服務被查詢
  7. 庖丁解牛TLD(二)——初始化工作(为算法的准备)
  8. python软件安装和使用方法_aws cli的安装及使用(内含python的安装方法)
  9. mongodb备份oplog_MongoDB 备份(mongodump)与恢复(mongorestore)
  10. csgo怎么控制电脑玩家_电脑怎么远程控制他人电脑,教您给电脑设置远程控制的方法...