类锁

Synchronize与static
在静态方法上,加上synchronize关键字
表示锁定class类,该锁是类级别的锁,独占类锁

代码

package com.bjsxt.base.sync002;/*** 关键字synchronized取得的锁都是对象锁,而不是把一段代码(方法)当做锁,* 所以代码中哪个线程先执行synchronized关键字的方法,哪个线程就持有该方法所属对象的锁(Lock),* * 在静态方法上加synchronized关键字,表示锁定.class类,类一级别的锁(独占.class类)。* * @author alienware**/
public class MultiThread {private static int num = 0;/** static */public static synchronized void printNum(String tag) {try {if (tag.equals("a")) {num = 100;System.out.println("tag a, set num over!");Thread.sleep(1000);} else {num = 200;System.out.println("tag b, set num over!");}System.out.println("tag " + tag + ", num = " + num);} catch (InterruptedException e) {e.printStackTrace();}}// 注意观察run方法输出顺序public static void main(String[] args) {// 俩个不同的对象final MultiThread m1 = new MultiThread();final MultiThread m2 = new MultiThread();Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {m1.printNum("a");}});Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {m2.printNum("b");}});t1.start();t2.start();}}

运行

A执行完成,b才可以执行

说明
该锁是类锁,独占该类

Synchronize类锁相关推荐

  1. 类锁 synchronized对象锁 和 Lock对象锁

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

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

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

  3. Java 对象锁和类锁全面解析

    2019独角兽企业重金招聘Python工程师标准>>> 最近工作有用到一些多线程的东西,之前吧,有用到synchronized同步块,不过是别人怎么用就跟着用,并没有搞清楚锁的概念. ...

  4. 【Java 并发编程】线程锁机制 ( 线程安全 | 锁机制 | 类锁 | 对象锁 | 轻量级锁 | 重量级锁 )

    文章目录 一.线程安全 二.锁机制 ( 类锁 | 对象锁 ) 三.锁分类 ( 轻量级锁 | 重量级锁 ) 一.线程安全 多个线程同时访问 同一个共享变量 时 , 只要能保证 数据一致性 , 那么该变量 ...

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

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

  6. java并发编程实践学习---java的类锁和对象锁

    最近在看Java Concurrent in Practice(java并发编程实践),发现自己对java的线程.锁等机制,理解很肤浅,学习的也不够全面.打算借着这本书,全面的学习下JDK的并发包和一 ...

  7. java对象锁与类锁区别

    假设我有一个类ClassA,其中有一个方法synchronized methodA(),那么当这个方法被调用的时候你获得就是对象锁,但是要注意,如果这个类有两个实例,比如:ClassA a = new ...

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

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

  9. java中存在对多个对象加锁的情况_Java对象锁和类锁全面解析(多线程synchronized关键字)...

    最近工作有用到一些多线程的东西,之前吧,有用到synchronized同步块,不过是别人怎么用就跟着用,并没有搞清楚锁的概念.最近也是遇到一些问题,不搞清楚锁的概念,很容易碰壁,甚至有些时候自己连用没 ...

最新文章

  1. 用notepad++怎样批量添加引号
  2. [na]vrrp两用(网关冗余+服务器热备)
  3. SAP UI5 router的初始化逻辑
  4. continue 的用户及实例
  5. [四川金信石招人]技术总监架构师测试工程师
  6. 经典假设检验理论记录一二
  7. 带音乐动态手机壁纸小程序源码-带自动采集-更新功能
  8. 崇高文本_崇高文本片段指南
  9. python包的初始与日志模块
  10. git不区分文件名大小写这种坑当然要跳出来
  11. 一个很酷的SilverLight例子
  12. 三天研读《中兴电路设计规范》精华总结
  13. CSS选取子标签元素:nth-child、first-child、last-child
  14. 2021年泰迪杯数据挖掘赛B题数据——岩石图像的智能分类
  15. 【typecho插件】typecho邮箱插件LoveXXzhoudedi祝福邮箱typecho插件、小周
  16. 《引爆点》学习笔记二
  17. 手机直播系统,仿映客直播程序项目需求
  18. JavaEE | 增强for循环
  19. WPF学习第十一集-深入浅出话模板
  20. lenovo启动热键_联想启动热键

热门文章

  1. Android IllegalStateException: The specified child already has a parent问题解决办法
  2. ASP.NET Core 1.1 Preview 1 简介(包含.NETCore 1.1升级公告)
  3. hive中,向map类型插入数据时,需要str_to_map一下
  4. Cordiality ERP MVC 3 测试作品
  5. 指针01 - 零基础入门学习C语言41
  6. STM32下载程序时的一个奇怪现象
  7. AB1601移植二维码编码库注意事项
  8. EOS 共识机制 (4)出块流程
  9. 初等数论--整除--线性组合与最大公因数之间的关系
  10. Kubernetes存储之PV-PVC