文档章节

synchronized的几种用法

pacey
 pacey
发布于 2017/09/05 22:29
字数 321
阅读 3
收藏 0
点赞 0
评论 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 的用法 synchronized 是一种同步锁。它修饰的对象有以下几种: 修饰一个代码块,被修饰的代码块称为同步代码块,作用范围是{}里面的代码,作用的兑现是调用这个代码块的对象; ...

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

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

icanos
2016/07/21
5
0
【易错】对象锁 & 类锁(二)

一、synchronized关键字 synchronized关键字有如下几种用法: 非静态方法或静态方法上加入关键字synchronized; 使用synchronized(对象/this/类.class)静态快; 下面对上述两种情况进行区分。...

大白来袭
2017/07/10
0
0
Java对象锁和类锁全面解析(多线程synchronized关键字)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 最近工作有用到一些多线程的东西,之前吧,有用到synchronized同步块,不过是别人怎么用就跟着用,并没有搞清楚...

tantexian
2016/12/19
16
0
Java工程师面试题整理[社招篇]

http://blog.csdn.net/jackfrued/article/details/44921941 1、面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类...

HD243608836
2017/12/12
0
0
Java 同步方式 (1) —— synchronized

前两篇博客 ArrayList 用法比较 和 String 用法比较,介绍过程中都提及到了同步和线程安全的问题,本篇将重点介绍Java同步方式之一的synchronized用法。 线程安全 线程安全,是指每次运行结果...

长平狐
2013/01/06
75
0
Java synchronized使用

先看测试方法: 多个线程同时访问多个synchronized方法: 输出如下: 由此可以看出:多线程在同一时刻只能有一个线程访问对象的synchronized方法 多线程同时访问一个synchronized方法,一个非...

清尘V
2016/05/11
55
0
聊聊单例模式

近日有个朋友去面试了,结果被问到了单例模式,朋友的回答好像不是很让人满意,于是我就总结了一下。 其实单例的写法有很多种,下面总结了常用的几种。 1、最简单的饿汉模式 这种方式比较简单...

-wangming-
2016/10/26
26
2
多线程并发的解决方案 volatile synchronized notify notifyAll wait关键字分析

1.ThreadLocal用法 在java中,如果一个变量需要被多个线程访问,可以使用volatile来声明它为“易变的”。而假如一个变量要被持有它的某个线程独享,在java中,它可以使用java.lang.ThreadLoc...

陈小扁
2016/03/09
26
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell及python脚本方式登录服务器

一、问题 在工作过程中,经常会遇见需要登录服务器,并且因为安全的原因,需要使用交互的方式登录,而且shell、python在工作中也经常用到,并且可以提供交互的功能。都是利用了expect、spawn...

yangjianzhou
5分钟前
0
0
upstream sent too big header while reading...

nginx 报错:1736 upstream sent too big header while reading response header from upstream 1. 一般处理 location ~ \.php$ { #增加下面两句 fastcgi_buffer_size 128k; ......

dubox
16分钟前
0
0
Python解析配置文件模块:ConfigPhaser

import configparser as pa# [SectionA]# a = aa# b = bb# c = cc# [SectionB]# optionint = 1# optionfloat = 1.1# optionstring = string#https://www.cnblogs.com/a......

易野
23分钟前
0
0
Java基础——面向对象

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Object的方法: clone() Object 克隆 to Strin...

凯哥学堂
24分钟前
0
0
rabbitmq学习记录(八)消息发布确认机制

RabbitMQ服务器崩了导致的消息数据丢失,已经持久化的消息数据我们可以通过消息持久化来预防。但是,如果消息从生产者发送到vhosts过程中出现了问题,持久化消息数据的方案就无效了。 Rabbit...

人觉非常君
29分钟前
0
0
毕业5年,我是怎么成为年薪30W的运维工程师

#转载# 我在大学读的是计算机专业,但大学毕业之后,进入到一家私企进行工作,工作的内容类似于网管,会经常的去修电脑,去做水晶头等内容。刚开始工作,也没想太多,最想的是丰富自己的工作...

Py爱好
36分钟前
1
0
大数据基础知识,大数据学习,涉及的知识点

一、什么是大数据 一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流 转、多样的数据类型和价值密度低四大特征。...

董黎明
51分钟前
0
0
Linux CentOS 7上安装极点五笔

话说几天前在新买的惠普笔记本上成功地安装了Linux CentOS 7操作系统、Nvidia Quandro P600驱动程序及X Window,并在VMware下安装Red Hat教学环境,彻底跳出Windows的苦海,但仍然有一件事不...

大别阿郎
今天
17
0
2018年7月20日集群课程

一、集群介绍 集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。 ...

人在艹木中
今天
0
0
spark开发机中调试snappy

目的 在Idea中的点击运行,使spark可以直接读取snappy 自己编译hadoop,以支持snappy的压缩。 自己编译的目的就是要得到支持snappy文件读写的动态链接库。如果可以在网上下载,可以跳过自行编...

benny周
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部