notify()唤醒线程,不会立即释放锁对象,需要等到当前同步代码块都执行完后才能释放锁对象
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()唤醒线程,不会立即释放锁对象,需要等到当前同步代码块都执行完后才能释放锁对象相关推荐
- 存储过程没有执行完后没有释放锁_【大厂面试07期】说一说你对synchronized锁的理解?...
PS:本文已收录到1.3 K+ Star 数的开源项目-<大厂面试指北>,如果想要了解更多,可以看一看,项目地址如下: https://github.com/NotFound9/inter ...
- 理解c函数执行完后,释放内存
在C语言中,函数仅仅是一个小的功能块,函数执行完后(也就是函数功能完成),会根据调用约定来释放,该执行函数所占用的内存资源.这里的资源就是执行该函数所占用的栈内存.当函数执行完后仅仅就是释放该函数所用 ...
- 存储过程没有执行完后没有释放锁_面试必问---synchronized实现原理及锁升级过程你懂吗?...
synchronized实现原理及锁升级过程 前言: synchronized是Java内置的机制,是JVM层面的,而Lock则是接口,是JDK层面的 尽管最初synchronized的性能效率比较差 ...
- 6※、线程同步、同步锁、同步代码块的使用、同步锁释放的时机、ReentrantLock可重入锁、公平锁与非公平锁的区别、什么是死锁、线程间的通信(生产者和消费者模式)
线程锁 1.※线程的同步:(要确保对象锁是一致的) 1.未使用同步锁的抢票 2.使用了同步锁的抢票 3.线程-同步代码块的使用 4.同步方法和代码块的区别 5.同步锁释放的时机 练习:多线程生产手机 ...
- 线程执行完之后会释放吗_java多线程并发:CAS+AQS+HashMap+volatile+ThreadLocal,乐分享...
CyclicBarrier.CountDownLatch.Semaphore 的用法 CountDownLatch(线程计数器 ) CountDownLatch 类位于 java.util.concu ...
- 黑马毕向东Java课程笔记(day11):多线程(第一部分)——进程与线程+线程创建+线程安全与同步代码块+同步锁/死锁
多线程好文:添加链接描述 锁机制:synchronized.Lock.Condition.volatile(原子性可见性)--参考添加链接描述 1.进程与线程概述 首先,对于CPU执行每一个程序, ...
- java 线程 wait 一定要同步_java中使用wait就得使用同步锁,而且2个线程必须都使用同步代码块,否则就会异常...
标签: 标题已经说明,子线程wai()时候默认的锁不是同步代码块的锁,因此wai时候显示的指明锁,现在解释看code: public class Test { //staticboolean flag ...
- java new一个线程执行完后会自动销毁吗_Java基础总结,超级全的面试题
1. static关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是 static 的方法?是否可以在 static 环境中访问非static 变量? stat ...
- date对象加十分钟_一张图讲解对象锁和关键字synchronized修饰方法(代码块)
做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 每个对象在出生的时候就有一把钥匙(监视器Monitor),那么被synchronized 修饰的方法相当于给方法加了一个锁 ...
最新文章
- 深度学习调参体验(一)
- Windows Server 2008 多元密码策略之ADSIEDIT
- 【控制】盖尔圆盘定理
- MATLAB table数据结构 再篇
- spring 的MAVEN配置
- 为什么大部分程序员看不起PHP这门语言?
- 收藏一些效果炫酷的可视化网站
- 计算基因组学需要计算机知识吗,生物信息学——计算基因组学的一些参考书
- python忠告_学习Python一段时间,老司机给上路新手的3点忠告!
- bzoj 1008: [HNOI2008]越狱
- 前后端分离的思考与实践(一)
- 允许使用抽象类类型 isearchboxinfo 的对象_Java面向对象之final、abstract抽象、和变量生命周期...
- 32怎么通过一个按键实现不同工作模式_罗技G604鼠标为设计师而生,15个可编程按键玩转Adobe软件!...
- hive sql列转行
- 1.1	半导体基础知识
- Python numpy函数:shape用法
- 【Kubernetes学习笔记】-kubeadm 手动搭建kubernetes 集群
- visual studio 2017 安装离线MSDN
- 属性动画Android动画,Android动画(三)属性动画Animator与Interpolator
- 骨传导耳机对耳朵好不好、不伤耳的骨传导耳机推荐
热门文章
- oracle-备份工具exp-imp
- Android新闻案例clientserver达到,完全自己的新闻节目平台
- PowerShell实现批量收集SCVMM中虚拟机IP-续
- Mysql日期函数使用大全
- Linux包管理速查表
- 允許Linux的snmp服務被查詢
- 庖丁解牛TLD(二)——初始化工作(为算法的准备)
- python软件安装和使用方法_aws cli的安装及使用(内含python的安装方法)
- mongodb备份oplog_MongoDB 备份(mongodump)与恢复(mongorestore)
- csgo怎么控制电脑玩家_电脑怎么远程控制他人电脑,教您给电脑设置远程控制的方法...