Synchronize对象锁异步
对象锁异步
A线程,先持有对象的锁
b线程,可以以异步的方式,调用对象中的非synchronize修饰的方法
package com.bjsxt.base.sync003;/*** 对象锁的同步和异步问题**/
public class MyObject {public synchronized void method1(){try {System.out.println(Thread.currentThread().getName());Thread.sleep(4000);} catch (InterruptedException e) {e.printStackTrace();}}/** synchronized */public void method2(){System.out.println(Thread.currentThread().getName());}public static void main(String[] args) {final MyObject mo = new MyObject();/*** 分析:* t1线程先持有object对象的Lock锁,t2线程可以以异步的方式调用对象中的非synchronized修饰的方法* t1线程先持有object对象的Lock锁,t2线程如果在这个时候调用对象中的同步(synchronized)方法则需等待,也就是同步*/Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {mo.method1();}},"t1");Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {mo.method2();}},"t2");t1.start();t2.start();}}
运行
T1与t2同时输出,t2并没有等待
说明,可以异步调用对象的,非synchronize修改的方法
Synchronize对象锁异步相关推荐
- Synchronize对象锁
对象锁 多个线程多个锁 多个线程,每个线程都可以拿到自己指定的锁 分别获得锁之后,执行synchronize方法体的内容 Synchronize 取得的锁,都是对象锁 两个对象,线程获得的就是两个不同 ...
- Synchronize对象改变
Synchronize 对象锁改变 当对一个对象加锁时 如果,对象本身发生改变,那么,持有的锁就不同了 如果,对象本身不改变,那么,依然是同步的 package com.bjsxt.base.sync ...
- 线程介绍,异步,对象锁
2019独角兽企业重金招聘Python工程师标准>>> Java多线程编程总结 线程基础: 当创建线程时,会为非static对象各自申请内存空间 卖票程序: 线程的优先级用1-10之 ...
- Snchronize对象锁同步
对象锁同步 A线程,先持有对象的锁 b线程,如果在这个时候,调用对象中synchronize修饰的同步方法 则需要等待 package com.bjsxt.base.sync003;/*** 对象锁的 ...
- 内置类和对象锁改变 笔记记录
当内置类是私有的,若实例化该类与内置类 在一个包下可以实例化.若不在一个包下要实例化,需要将内置类改为public package com.inner; public class PublicClas ...
- Synchronize类锁
类锁 Synchronize与static 在静态方法上,加上synchronize关键字 表示锁定class类,该锁是类级别的锁,独占类锁 代码 package com.bjsxt.base.syn ...
- java守护锁_Java 对象锁-synchronized()与线程的状态与生命周期与守护进程
synchronized(someObject){ //对象锁 } 一.对象锁 someObject 的使用说明: 1.对象锁的返还. 当synchronize()语句执行完成. 当synchroni ...
- wait放弃对象锁_Java线程中wait、await、sleep、yield、join用法总结
一.wait().notify().notifyAll()用法 obj.wait()/obj.wait(long timeout)是Object中的方法,当线程调用wait()方法,当前线程释放对象锁 ...
- 并发加对象锁_通用并发对象池
并发加对象锁 在本文中,我们将介绍如何在Java中创建对象池. 近年来,JVM的性能成倍增加,大多数类型的对象几乎都变得多余,从而提高了对象池的性能. 从本质上讲,对象的创建不再像以前那样昂贵. 但是 ...
最新文章
- linux+postfix+extmail+dovecot搭建邮件服务器
- quartz集群调度机制调研及源码分析---转载
- 本地生活JAVA版本_赶集生活java版
- QT5 获取窗口、系统屏幕大小尺寸信息,Qt 获取控件位置坐标,屏幕坐标,相对父窗体坐标
- 卵巢鸿蒙不全怎么检查,卵巢黄体功能不足怎么办 这三个处理方法要了解
- Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器)
- hyperledger部署java_Hyperledger Fabric(超级账本) Java 开发区块链 部署运行智能合约
- ffmpeg多路同时推流
- 【TM1640】STM32 TM1640芯片驱动程序
- sox 音频采样率转换
- c语言中怎么将lg换成ln,lg和ln的换算(ln和log怎么转化)
- datastage作业hang住
- 计算机桌面变色怎么办,电脑屏幕变色了怎么办?电脑屏幕变色的六大原因及解决办法...
- 021-MongoDB数据库从入门到放弃
- INS-30131问题解决。
- 图像处理与计算机视觉:基础,经典以及最近发展(总结)
- Ubuntu22.04上的fcitx5五笔/郑码输入法(fcitx5-table-extra.deb包)
- python练手(PyAutoGUI)
- Joint Segmentation of Retinal Layers and Focal Lesions in 3-D OCT Data of Topologically Disrupted Re
- 虾皮物流价格是多少?如何计算?