文档章节

@synchronized方法

Matsonga
 Matsonga
发布于 2016/03/23 09:38
字数 378
阅读 40
收藏 0

@synchronized ,代表这个方法加锁, 相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程例如B正在用这个方法,有的话要等正在使用synchronized方法的线程B运行完这个方法后再运行此线程A,没有的话,直接运行。它包括两种用法:synchronized 方法和 synchronized 块。 @synchronized 方法控制对类(一般在IOS中用在单例中)的访问:每个类实例对应一把锁,每个 synchronized 方法都必须获得调用该方法锁方能执行,否则所属就会发生线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程方能获得该锁,重新进入可执行状态。这种机制确保了同一时刻对于每一个类,至多只有一个处于可执行状态,从而有效避免了类成员变量的访问冲突(只要所有可能访问类的方法均被声明为 synchronized)。 

synchronized 块:   

@通过 synchronized关键字来声明synchronized 块。

语法如下:   

@synchronized(syncObject) { }   synchronized 块是这样一个代码块,其中的代码必须获得对象 syncObject (如前所述,可以是类实例或类)的锁方能执行,具体机制同前所述。由于可以针对任意代码块,且可任意指定上锁的对象,故灵活性较高。

© 著作权归作者所有

共有 人打赏支持
Matsonga
粉丝 0
博文 17
码字总数 8857
作品 0
大连
程序员
java并发编程(1)——synchronized关键字解析

synchronized是Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchro...

十二缸帕萨特
2014/04/12
0
0
理解 java 中的 synchronized 关键字

实际上,我关于java的基础知识的90%以上都来自Thinking in Java。对于其中的synchronized关键字, 当时就是浏览一下,大概知道意思,也没有细看。后来一直没有用过这个关键字。 昨天看Think...

大数据之路
2012/10/27
0
0
面试系列-高并发之synchronized

本章,会对synchronized关键字进行介绍。涉及到的内容包括: synchronized原理 synchronized基本规则 synchronized方法 和 synchronized代码块 实例锁 和 全局锁 synchronized原理 在java中,...

技术小能手
07/05
0
0
多线程学习笔记(八)

注: 当一个线程执行的代码出现异常时,其所持有的锁会自动释放 同步不具有继承性 不在synchronized块中就是一部执行,在synchronized中就是同步执行 和synchronized方法一样,synchronized(thi...

scymore
2016/09/07
11
0
学习笔记6:synchronized关键字-->线程同步

为什么要使用关键字synchronized? java程序中可以存在多个线程,但是当多个线程操作同一资源时候,可能会导致数据不一致。 区分synchronized方法与synchronized块: synchronized方法是一种粗...

牧羊人Berg
2015/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java工程师用spring boot和web3j构建以太坊区块链应用

区块链最近IT世界的流行语之一。这项有关数字加密货币的技术,并与比特币一起构成了这个热门的流行趋势。它是去中心化的,不可变的分块数据结构,这是可以安全连接和使用的密码算法。在这种结...

笔阁
7分钟前
1
0
聊聊sentinel的SentinelWebAutoConfiguration

序 本文主要研究一下sentinel的SentinelWebAutoConfiguration SentinelWebAutoConfiguration spring-cloud-alibaba-sentinel-autoconfigure-0.2.0.BUILD-SNAPSHOT-sources.jar!/org/springf......

go4it
9分钟前
0
0
java ArrayList 根据对象内的属性排序

//根据修改时间排序Comparator com = new Comparator<ReleaseInfo>() {public int compare(ReleaseInfo reInfo1, ReleaseInfo reInfo2) { //return reInfo2.getModifyTime().c......

成长中的小白
9分钟前
0
0
PowerDesigner p f m

(非原创) P:PirmaryKey 主键 F:ForeignKey 外键 M:Mandatory 强制要求(不能为空) 主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从...

森火
9分钟前
0
0
Nexus Repository Manager 搭建私有docker仓库

Nexus Repository Manager 搭建私有docker仓库 2018年05月08日 14:44:23 阅读数:115 1.下载nexus3的镜像: docker pull sonatype/nexus3 2.使用镜像启动一个容器: docker run -d --name n...

linjin200
10分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部