Java——同步监视器
package day04;
/*** 有效的缩小同步范围可以在保证并发安全的前提下尽可* 能提高并发效率。* * 同步块可以更准确的控制需要同步运行的代码片段。* synchronized(同步监视器) {* 需要同步运行的代码片段* }* * 同步监视器是java中任意的一个对象,只要保证多个线程* 看到的该对象是“同一个”,即可保证同步块中的代码是并发安全的。* @author Administrator**/
public class SyncDemo2 {public static void main(String[] args) {final Shop shop = new Shop();Thread t1 = new Thread() {public void run() {shop.buy();}};Thread t2 = new Thread() {public void run() {shop.buy();}};t1.start();t2.start();}
}
package day04;public class Shop {public void buy() {Thread t = Thread.currentThread();try{System.out.println(t.getName()+":正在挑衣服...");Thread.sleep(5000);synchronized(this) {System.out.println(t.getName()+":正在试衣服...");Thread.sleep(5000);}System.out.println(t.getName()+":结账离开.");}catch(Exception e) {e.printStackTrace();} }
}
Java——同步监视器相关推荐
- Java 同步监视器中的 wait() 和 notify() 方法的具体实现
在Oracle JVM 1.6 里面实现的object的wait 和notify方法是在synchronizer.cpp里实现. 先介绍2个对象: 1. ObjectMonitor 对象 主要用来监 ...
- java同步与死锁_Java多线程 - 线程同步与死锁
一.线程同步 1)模拟多个用户同时从银行账户里面取钱 ● Account 类:银行账户类,里面有一些账户的基本信息,以及操作账户信息的方法 //模拟银行账户 classAccount {private ...
- java 同步方式 lock_Java的同步锁(Lock)
从Java 5开始,Java提供了一种功能更强大的线程同步机制一-通过 显式定义同步锁对象来实现同步,在这种机制下,同步锁由Lock对象充当.Lock提供了比synchronized方法和synchr ...
- java同步锁实例_Java lock同步锁使用实例解析
这篇文章主要介绍了Java lock同步锁使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1)Lock是一个接口,而synchroniz ...
- java 同步块关键字_Java同步关键字,同步方法和块
java 同步块关键字 Java synchronized keyword is used in multithreading to create a code block that can be e ...
- Java同步之synchronized
Java中可以使用关键字synchronized进行线程同步控制,实现关键资源顺序访问,避免由于多线程并发执行导致的数据不一致性等问题.synchronized的原理是对象监视器(锁),只有获取到监视 ...
- 【线程同步】 Java 同步块(synchronized)详细说明
我们在java开发中常常用synchronized( 互斥锁)来进行同步,但是对于 synchronized关键字有那些用法,会产生什么样的效果却不一定清楚,下面将详细介绍synchronized在程 ...
- Java中监视器和锁
Java中监视器和锁 监视器和锁在Java虚拟机中是一块使用的.监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块.每一个监视器都和一个对象引用相关联.线程在获取锁之前不允许执行同步代码. ...
- 死磕 java同步系列之ReentrantReadWriteLock源码解析
问题 (1)读写锁是什么? (2)读写锁具有哪些特性? (3)ReentrantReadWriteLock是怎么实现读写锁的? (4)如何使用ReentrantReadWriteLock实现高效安全的 ...
最新文章
- Mybait缓存机制
- SharePoint 检测页面编辑模式
- 【Git】cannot create directory invalid argument
- AttributeError: module 'networkx' has no attribute 'draw_graphviz'解决方案
- 关于USB-AUDIO使用ALSA编程的一点问题
- target存放的是编译后的.class文件地方 默认情况下不会讲非class文件放入进入 如果要使用非.class文件 需要通过增加配置方式自动加入文件...
- 什么是Mockito Extra接口?
- 使用delphi 开发多层应用(十)安全访问服务器
- Ext.ClassManager源码
- 剑指offer python版 数组中只出现一次的两个数字
- 中小学教师计算机应用,关于中小学教师计算机应用教育的思考
- java视频压缩 lz4_压缩包格式有哪些?
- 出海推荐 (出海服务器盘点)
- 数据建模:个人信用分是如何计算出来的?
- 低门槛,多玩法打金游戏 Tiny World
- 学 Win32 汇编[24] - 移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRD
- 青软集团U+新工科智慧云平台助力西北民族大学编程竞赛成功举办!
- PHP抖音无水印解析api
- 三种方式获取大疆照片的EXIF/XMP信息(附测试代码)
- 沃尔夫奖得主伊藤清:数学与概率论的历史