文档章节

synchronized的几种用法

pacey
 pacey
发布于 2017/09/05 22:29
字数 321
阅读 4
收藏 0

1、修饰代码块:

        ①synchronized(this) :获取当前对象锁,锁住的是当前整个对象(同同步方法)

        当一个线程已经访问到代码块,其他对象访问该代码块将会被阻塞,直到锁释放。同样,其他线程访问非synchronize块的部分。

        ②synchronized(*.class):获取class对象锁,锁住的是所有对象(同同步静态方法)

        当随意一个对象进去代码块,所有该类对象都不可进去该代码块,将会被阻塞。

        ③两个synchronize之间会有互斥性

2、修饰方法:

        ①同步静态方法:同步静态方法是指对所有同步静态方法进行加锁同步

        ②普通同步方法:同步方法的是指对实例对象本身进行加锁同步

        如果线程拥有同步和非同步方法,则非同步方法可以被多个线程自由访问而不受锁的限制。

        线程可以获得多个重进入(synchronized )锁。比如,在一个对象的同步方法里面调用另外一个对象的同步方法,则获取了两个对象的同步锁。

        

 

3、同步会影响效率,比起同步方法,更好使用同步代码块

© 著作权归作者所有

共有 人打赏支持
pacey
粉丝 0
博文 25
码字总数 8465
作品 0
闵行
私信 提问
并发编程笔记二:synchronized锁住了谁?

在并发编程中要使用到关键字,当我们用关键字修饰一个方法时,代表着一个锁(Lock),那么这个锁的对象是什么,也就是它锁住了谁? 的使用情况大概就是下面几种: synchronized修饰非静态方法...

binxin5108
2016/12/23
13
0
synchronized 之 对象锁 和 类锁

一、synchronized(object) 如果object没有被加锁,则获取object的锁;如果object已经被加锁则等待object的锁被释放。 二、需要加锁的情景 多线程共享同一资源会引起线程安全的情况下,才需要...

MyOldTime
2018/09/21
0
0
精选30道Java多线程面试题

1、线程和进程的区别 2、实现线程有哪几种方式? 3、线程有哪几种状态?它们之间如何流转的? 4、线程中的start()和run()方法有什么区别? 5、怎么终止一个线程?如何优雅地终止线程? 6、T...

java技术栈
2017/08/13
0
0
Synchronized 的用法

Synchronized 的用法 synchronized 是一种同步锁。它修饰的对象有以下几种: 修饰一个代码块,被修饰的代码块称为同步代码块,作用范围是{}里面的代码,作用的兑现是调用这个代码块的对象; ...

u014527323
2017/11/23
0
0
Java 多线程:synchronized 关键字用法(修饰类,方法,静态方法,代码块)

前言 *** 在多线程生成的原因(Java内存模型与i++操作解析) 中,介绍了Java的内存模型,从而可能导致的多线程问题。synchronized就是避免这个问题的解决方法之一。除了 synchronized 的方式...

icanos
2016/07/21
5
0

没有更多内容

加载失败,请刷新页面

加载更多

MaxCompute安全管理指南-案例篇

通过《MaxCompute安全管理-基础篇》了解到MaxCompute和DataWorks的相关安全模型、两个产品安全方面的关联,以及各种安全操作后,本篇主要给出一些安全管理案例,给安全管理的成员作为参考。 ...

zhaowei121
13分钟前
1
0
B站智能防挡弹幕的一种python实现

某天代码写得老眼昏花,去B站上摸鱼,突然发现奇怪的现象: 哟呵,B站竟然做了视频前景提取,把弹幕藏到画面人物的后面。识别效果还意外地不错呢。 然后又翻了下,发现这是个叫做“智能防挡弹...

crossin
20分钟前
2
0
TortoiseSVN 使用教程

TortoiseSVN 使用教程 TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。 TortoiseSVN 安装 下载地址:https://tortoisesvn.net/downloads.htm...

linjin200
23分钟前
2
0
使用应用程序(Java/Python)访问MaxCompute Lightning进行数据开发

MaxCompute Lightning是MaxCompute产品的交互式查询服务,支持以PostgreSQL协议及语法连接访问Maxcompute项目,让您使用熟悉的工具以标准 SQL查询分析MaxCompute项目中的数据,快速获取查询结...

阿里云云栖社区
24分钟前
1
0
条形码控件TBarCode SDK系列教程十二(网络应用程序问题解答)

TBarCode SDK是一款可以在任意应用程序和打印机下生成和打印所有条码的条码软件组件。TBarCode SDK对于Microsoft Office用户以及软件开发者提供条码打印。使用此款条码软件组件您可以以完美效...

ymy_666666
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部