文档章节

synchronized几种形式及其用途

呆萌的我
 呆萌的我
发布于 2015/10/13 20:13
字数 203
阅读 6
收藏 0

java并发编程过程中,常用到同步关键字synchronized,现在分析下synchronized在编程过程中的几种用途。

在方法体上

public synchronized void method1() {    
}

一次同时只能有一个线程能调用方法,其他线程只能等待。

在方法内部1

Integer mutex = 10;
public void method1() {
    synchronized (mutex) {
        System.out.println(mutex);
    }
}
public void method2() {
    synchronized (mutex) {
        mutex +=1;
    }
}

在调用method1时,会阻塞mehtod2

在方法内部2

public void method() { synchronized (this) { System.out.println("method2"); } }

通过当前对象锁

在方法内部3

public void method() { synchronized (XX.class) { System.out.println("method2"); } }

精度加锁

Object obj1 = new Object();
Object obj2 = new Object();

public void method1() {
    synchronized (obj1) {   
    }
}
public void method2() {
    synchronized (obj2) {   
    }
}

可以根据自己需要,加锁更精确,提高效率

版权声明:本文为博主原创文章,未经博主允许不得转载。

© 著作权归作者所有

共有 人打赏支持
呆萌的我
粉丝 4
博文 15
码字总数 15443
作品 0
天津
私信 提问
synchronized 之 对象锁 和 类锁

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

MyOldTime
09/21
0
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、面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? ...

编程大侠
04/09
0
0
Java开发面试题大汇总,年薪30万的面试题你能答出多少?

最近有很多朋友在问,年后打算跳槽,这两个月该怎么准备,针对这些问题,我总结了一套年薪30万左右Java开发面试题,虽然还落了一下没写,但是我感觉完全掌握这些,年薪30万是没有问题的,下面...

Java高级架构进阶
01/08
0
0
精选30道Java多线程面试题

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

java技术栈
2017/08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用any-loader封装jQuery的XHR —— 随便写着玩系列

哎,都说没人用JQuery啦,叫你别写这个。 其实我也是好高骛远使用过npm上某个和某个很出名的XHR库,嗯,认识我的人都知道我喜欢喷JQ,以前天天喷,见面第一句,你还用JQ,赶紧丢了吧。但我也...

曾建凯
今天
4
0
聊聊storm的AggregateProcessor的execute及finishBatch方法

序 本文主要研究一下storm的AggregateProcessor的execute及finishBatch方法 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout......

go4it
今天
3
0
大数据教程(7.5)hadoop中内置rpc框架的使用教程

博主上一篇博客分享了hadoop客户端java API的使用,本章节带领小伙伴们一起来体验下hadoop的内置rpc框架。首先,由于hadoop的内置rpc框架的设计目的是为了内部的组件提供rpc访问的功能,并不...

em_aaron
今天
5
0
CentOS7+git+github创建Python开发环境

1.准备CentOS7 (1)下载VMware Workstation https://pan.baidu.com/s/1miFU8mk (2)下载CentOS7镜像 https://mirrors.aliyun.com/centos/ (3)安装CentOS7系统 http://blog.51cto.com/fengyuns......

枫叶云
昨天
4
0
利用ibeetl 实现selectpicker 的三级联动

1. js 直接写在html页面上面,ibeetl 就可以动态地利用后台传上来的model List ,不需要每次点击都要ajax请求后台 2. 使用selectpicker 的时候,除了对selecct option的动态处理后,还需要 $("#...

donald121
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部