对象锁同步

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 synchronized 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输出,过了4秒之后,t2才输出
说明,调用对象的synchronize修饰的方法,需要等待

Snchronize对象锁同步相关推荐

  1. java学习(162):同步对象锁

    定义一个dog类 public class Dog {private String name;public String getName() {return name;}public void set ...

  2. java线程同步以及对象锁和类锁解析(多线程synchronized关键字)

    一.关于线程安全 1.是什么决定的线程安全问题? 线程安全问题基本是由全局变量及静态变量引起的. 若每个线程中对全局变量.静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的:若有多个线 ...

  3. synchronized同步对象锁

    package com.system.util;import com.common.Constants; import com.util.Cache;/*** 创建同步对象锁* * @author j ...

  4. java同步锁synchronized_Java对象锁和类锁全面解析(多线程synchronized关键字)

    本文主要是将synchronized关键字用法作为例子来去解释Java中的对象锁和类锁.特别的是希望能帮大家理清一些概念. 一.synchronized关键字 synchronized关键字有如下两种 ...

  5. java锁方法和锁代码块_java的同步方法和同步代码块,对象锁,类锁区别

    /** * @author admin * @date 2018/1/12 9:48 * 做用在同一个实例对象上讨论 * synchronized同步方法的测试 * 两个线程,一个线程调用synchr ...

  6. (转)互斥对象锁和临界区锁性能比较 .

    在Win32平台上进行多线程编程,常会用到锁.下边用C++实现了互斥对象(Mutex)锁和临界区(CRITICAL_SECTION)锁,以加深理解和今后方便使用.代码已在VS2005环境下编译测试通过 ...

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

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

  8. Java:使用synchronized和Lock对象获取对象锁

    在并发环境下,解决共享资源冲突问题时,可以考虑使用锁机制. 1.对象的锁 所有对象都自动含有单一的锁. JVM负责跟踪对象被加锁的次数.如果一个对象被解锁,其计数变为0.在任务(线程)第一次给对象加锁 ...

  9. 对象的notify方法的含义和对象锁释放的三种情况

    1,notify的含义     (1)notify一次只随机通知一个线程进行唤醒 (2)在执行了notify方法之后,当前线程不会马上释放该对象锁,呈wait状态的线程也不能马上获得该对象锁, 要等到 ...

最新文章

  1. 拼音开头有什么字_excel查找函数应用:如何提取姓名的拼音首字母
  2. windows2003 DNS服务器配置
  3. 一个悄然成为世界最流行的操作系统诞生!
  4. Python学习6——条件,循环语句
  5. scala java maven项目_IntelliJ IDEA下Maven创建Scala项目的方法步骤
  6. 他山之石,可以攻玉——来自亚马逊的电商启示录
  7. 强大的Canvas开源库Fabric.js简介与开发指南
  8. java解析html jsoup_2020-06-02 jsoup java解析html
  9. 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...
  10. POJ2728 最小比率生成树/0-1分数规划/二分/迭代(迭代不会)
  11. Java 队列 Queue 使用说明
  12. Play 2.0 用户指南 - 表单提交和验证 --针对Scala开发者
  13. ganglia不能获取gpu_免费试用亚马逊云服务器进行深度学习实验:免环境配置/GPU支持...
  14. Python雷电小游戏、战机小游戏源代码源程序
  15. 精通Javascript之引用
  16. 视频教程-EOS 入门实战-区块链
  17. springboot配置log4j2
  18. 腾讯Docker云平台GaiaStack
  19. 机器人笔记psv中文_《机器人笔记》白金攻略 机器人笔记奖杯攻略
  20. 如何对待新事物_以积极态度看待不断出现的新事物

热门文章

  1. Spring基于Setter函数的依赖注入(DI)
  2. 解决虚拟机linux端mysql数据库无法远程访问
  3. 配置ip地址四种方法,方便学习linux的朋友
  4. C语言写的流氓关机程序及破解
  5. RDA8955烧写程序摘要
  6. STM8学习笔记---串口uart1
  7. 特征工程(2):特征构建
  8. IPFS (1) 初步简介
  9. C++ Primer 5th笔记(chap 13 拷贝控制)阻止拷贝
  10. Kubernetes存储之PV-PVC