Synchronize类锁
类锁
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类锁相关推荐
- 类锁 synchronized对象锁 和 Lock对象锁
在并发环境下,解决共享资源冲突问题时,可以考虑使用锁机制. 对象锁 所有对象都自动含有单一的锁. JVM负责跟踪对象被加锁的次数.如果一个对象被解锁,其计数变为0.在任务(线程)第一次给对象加锁的时候 ...
- java线程同步以及对象锁和类锁解析(多线程synchronized关键字)
一.关于线程安全 1.是什么决定的线程安全问题? 线程安全问题基本是由全局变量及静态变量引起的. 若每个线程中对全局变量.静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的:若有多个线 ...
- Java 对象锁和类锁全面解析
2019独角兽企业重金招聘Python工程师标准>>> 最近工作有用到一些多线程的东西,之前吧,有用到synchronized同步块,不过是别人怎么用就跟着用,并没有搞清楚锁的概念. ...
- 【Java 并发编程】线程锁机制 ( 线程安全 | 锁机制 | 类锁 | 对象锁 | 轻量级锁 | 重量级锁 )
文章目录 一.线程安全 二.锁机制 ( 类锁 | 对象锁 ) 三.锁分类 ( 轻量级锁 | 重量级锁 ) 一.线程安全 多个线程同时访问 同一个共享变量 时 , 只要能保证 数据一致性 , 那么该变量 ...
- java同步锁synchronized_Java对象锁和类锁全面解析(多线程synchronized关键字)
本文主要是将synchronized关键字用法作为例子来去解释Java中的对象锁和类锁.特别的是希望能帮大家理清一些概念. 一.synchronized关键字 synchronized关键字有如下两种 ...
- java并发编程实践学习---java的类锁和对象锁
最近在看Java Concurrent in Practice(java并发编程实践),发现自己对java的线程.锁等机制,理解很肤浅,学习的也不够全面.打算借着这本书,全面的学习下JDK的并发包和一 ...
- java对象锁与类锁区别
假设我有一个类ClassA,其中有一个方法synchronized methodA(),那么当这个方法被调用的时候你获得就是对象锁,但是要注意,如果这个类有两个实例,比如:ClassA a = new ...
- java锁方法和锁代码块_java的同步方法和同步代码块,对象锁,类锁区别
/** * @author admin * @date 2018/1/12 9:48 * 做用在同一个实例对象上讨论 * synchronized同步方法的测试 * 两个线程,一个线程调用synchr ...
- java中存在对多个对象加锁的情况_Java对象锁和类锁全面解析(多线程synchronized关键字)...
最近工作有用到一些多线程的东西,之前吧,有用到synchronized同步块,不过是别人怎么用就跟着用,并没有搞清楚锁的概念.最近也是遇到一些问题,不搞清楚锁的概念,很容易碰壁,甚至有些时候自己连用没 ...
最新文章
- 用notepad++怎样批量添加引号
- [na]vrrp两用(网关冗余+服务器热备)
- SAP UI5 router的初始化逻辑
- continue 的用户及实例
- [四川金信石招人]技术总监架构师测试工程师
- 经典假设检验理论记录一二
- 带音乐动态手机壁纸小程序源码-带自动采集-更新功能
- 崇高文本_崇高文本片段指南
- python包的初始与日志模块
- git不区分文件名大小写这种坑当然要跳出来
- 一个很酷的SilverLight例子
- 三天研读《中兴电路设计规范》精华总结
- CSS选取子标签元素:nth-child、first-child、last-child
- 2021年泰迪杯数据挖掘赛B题数据——岩石图像的智能分类
- 【typecho插件】typecho邮箱插件LoveXXzhoudedi祝福邮箱typecho插件、小周
- 《引爆点》学习笔记二
- 手机直播系统,仿映客直播程序项目需求
- JavaEE | 增强for循环
- WPF学习第十一集-深入浅出话模板
- lenovo启动热键_联想启动热键
热门文章
- Android IllegalStateException: The specified child already has a parent问题解决办法
- ASP.NET Core 1.1 Preview 1 简介(包含.NETCore 1.1升级公告)
- hive中,向map类型插入数据时,需要str_to_map一下
- Cordiality ERP MVC 3 测试作品
- 指针01 - 零基础入门学习C语言41
- STM32下载程序时的一个奇怪现象
- AB1601移植二维码编码库注意事项
- EOS 共识机制 (4)出块流程
- 初等数论--整除--线性组合与最大公因数之间的关系
- Kubernetes存储之PV-PVC