对象锁异步

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对象锁异步相关推荐

  1. Synchronize对象锁

    对象锁 多个线程多个锁 多个线程,每个线程都可以拿到自己指定的锁 分别获得锁之后,执行synchronize方法体的内容 Synchronize 取得的锁,都是对象锁 两个对象,线程获得的就是两个不同 ...

  2. Synchronize对象改变

    Synchronize 对象锁改变 当对一个对象加锁时 如果,对象本身发生改变,那么,持有的锁就不同了 如果,对象本身不改变,那么,依然是同步的 package com.bjsxt.base.sync ...

  3. 线程介绍,异步,对象锁

    2019独角兽企业重金招聘Python工程师标准>>> Java多线程编程总结 线程基础: 当创建线程时,会为非static对象各自申请内存空间 卖票程序: 线程的优先级用1-10之 ...

  4. Snchronize对象锁同步

    对象锁同步 A线程,先持有对象的锁 b线程,如果在这个时候,调用对象中synchronize修饰的同步方法 则需要等待 package com.bjsxt.base.sync003;/*** 对象锁的 ...

  5. 内置类和对象锁改变 笔记记录

    当内置类是私有的,若实例化该类与内置类 在一个包下可以实例化.若不在一个包下要实例化,需要将内置类改为public package com.inner; public class PublicClas ...

  6. Synchronize类锁

    类锁 Synchronize与static 在静态方法上,加上synchronize关键字 表示锁定class类,该锁是类级别的锁,独占类锁 代码 package com.bjsxt.base.syn ...

  7. java守护锁_Java 对象锁-synchronized()与线程的状态与生命周期与守护进程

    synchronized(someObject){ //对象锁 } 一.对象锁 someObject 的使用说明: 1.对象锁的返还. 当synchronize()语句执行完成. 当synchroni ...

  8. wait放弃对象锁_Java线程中wait、await、sleep、yield、join用法总结

    一.wait().notify().notifyAll()用法 obj.wait()/obj.wait(long timeout)是Object中的方法,当线程调用wait()方法,当前线程释放对象锁 ...

  9. 并发加对象锁_通用并发对象池

    并发加对象锁 在本文中,我们将介绍如何在Java中创建对象池. 近年来,JVM的性能成倍增加,大多数类型的对象几乎都变得多余,从而提高了对象池的性能. 从本质上讲,对象的创建不再像以前那样昂贵. 但是 ...

最新文章

  1. linux+postfix+extmail+dovecot搭建邮件服务器
  2. quartz集群调度机制调研及源码分析---转载
  3. 本地生活JAVA版本_赶集生活java版
  4. QT5 获取窗口、系统屏幕大小尺寸信息,Qt 获取控件位置坐标,屏幕坐标,相对父窗体坐标
  5. 卵巢鸿蒙不全怎么检查,卵巢黄体功能不足怎么办 这三个处理方法要了解
  6. Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器)
  7. hyperledger部署java_Hyperledger Fabric(超级账本) Java 开发区块链 部署运行智能合约
  8. ffmpeg多路同时推流
  9. 【TM1640】STM32 TM1640芯片驱动程序
  10. sox 音频采样率转换
  11. c语言中怎么将lg换成ln,lg和ln的换算(ln和log怎么转化)
  12. datastage作业hang住
  13. 计算机桌面变色怎么办,电脑屏幕变色了怎么办?电脑屏幕变色的六大原因及解决办法...
  14. 021-MongoDB数据库从入门到放弃
  15. INS-30131问题解决。
  16. 图像处理与计算机视觉:基础,经典以及最近发展(总结)
  17. Ubuntu22.04上的fcitx5五笔/郑码输入法(fcitx5-table-extra.deb包)
  18. python练手(PyAutoGUI)
  19. Joint Segmentation of Retinal Layers and Focal Lesions in 3-D OCT Data of Topologically Disrupted Re
  20. 虾皮物流价格是多少?如何计算?

热门文章

  1. 多线程,线程同步,synchronized关键字的用法
  2. Slim Span UVA - 1395
  3. [BZOJ1984] 月下“毛景树”
  4. dede_arctype|栏目表
  5. (转) 设置sqlplus中的退格键
  6. .NET通过RFC读取SAP数据
  7. php的array_multisort()使用
  8. 蓝牙BLE ATT剖析(一)
  9. 《研磨设计模式》chap14 迭代器模式(2)算工资举例
  10. pdf转换为word问题