synchronized的用法
根据修饰对象分类
- 同步方法
- 同步非静态方法
Public synchronized void methodName(){……}
- 同步静态方法
Public synchronized static void methodName(){……}
- 同步代码块
synchronized(this|object) {}
synchronized(类.class) {}
Private final Object MUTEX =new Object();Public void methodName(){Synchronized(MUTEX ){……}}
根据获取的锁分类
- 获取对象锁
synchronized(this|object) {}
修饰非静态方法
在 Java 中,每个对象都会有一个 monitor 对象,这个对象其实就是 Java 对象的锁,通常会被称为“内置锁”或“对象锁”。类的对象可以有多个,所以每个对象有其独立的对象锁,互不干扰。
- 获取类锁
synchronized(类.class) {}
修饰静态方法
在 Java 中,针对每个类也有一个锁,可以称为“类锁”,类锁实际上是通过对象锁实现的,即类的 Class 对象锁。每个类只有一个 Class 对象,所以每个类只有一个类锁。
在 Java 中,每个对象都会有一个 monitor 对象,监视器。
- 某一线程占有这个对象的时候,先monitor 的计数器是不是0,如果是0还没有线程占有,这个时候线程占有这个对象,并且对这个对象的monitor+1;如果不为0,表示这个线程已经被其他线程占有,这个线程等待。当线程释放占有权的时候,monitor-1;
- 同一线程可以对同一对象进行多次加锁,+1,+1,重入性
synchronized的用法相关推荐
- java synchronized 使用_Java中Synchronized的用法
synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码 ...
- Java中Synchronized的用法
原文:http://blog.csdn.net/luoweifu/article/details/46613015 <编程思想之多线程与多进程(1)--以操作系统的角度述说线程与进程>一文 ...
- Java 多线程:synchronized 关键字用法(修饰类,方法,静态方法,代码块)
前言 在 多线程生成的原因(Java内存模型与i++操作解析) 中,介绍了Java的内存模型,从而可能导致的多线程问题.synchronized就是避免这个问题的解决方法之一.除了 synchroni ...
- Java线程中关于Synchronized的用法
synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代 ...
- 从不同步的代码块中调用了对象同步方法。_Java中Synchronized的用法
Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行.拉勾IT课小编为大家分析. synchronized是Ja ...
- synchronized解释用法及原理
转自:HollisChuang's Blog synchronized synchronized的用法 synchronized的实现原理 synchronized与原子性 synchronized与 ...
- iOS 线程安全之@synchronized的用法
@synchronized(self)的用法: @synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改.这个是objective-c的一个锁定令牌,防止self ...
- Java中Synchronized的用法(简单介绍)
简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...
- java中synchronized的用法详解
记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ...
- synchronized(this)用法
关于 Java synchronized(this) 的问题 用法: public class Thread1 implements Runnable {public void run() { & ...
最新文章
- 系列文章--jQuery教程
- python培训出来的有公司要吗-目前从事Python培训的机构有很多家
- 使用RunTime添加动态方法、方法交换、获取所有属性来重写归档解档
- Android中的Dialog
- 小白入门深度学习 | 第四篇:配置PyTorch环境
- pfx证书密码怎么查询_2019成考成绩查询时间通知!忘记账号和密码怎么办?
- vagrant boxes
- Java方法中的参数太多,第2部分:参数对象
- Linux系统:centos7下搭建ElasticSearch中间件,常用接口演示
- 近年NOIP普及组复赛题目的简单讲解
- node命令错误--nodemon : 无法将“nodemon”项识别
- linux bug定位神器——lsof | grep 简直不能太好用
- JavaEE学习13--Jquery
- Linux acpi off报告ACPI bug处理方法
- [ATL/WTL]_[Gdiplus]_[关于使用Gdiplus来绘制反锯齿的圆角矩形]
- 如何透过表象直达本质
- php 图片上加文字,PHP实现在图片中添加中文文字
- 【鑫鑫批量挂Q器 v2.0绿色版】
- 寻找丢失的iexplore进程
- 下载到的电子书格式是Mobi,这种格式能否在手机上打开?