java高并发之synchronized
Posted 张小泽的小号
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java高并发之synchronized相关的知识,希望对你有一定的参考价值。
java高并发之synchronized
synchronized可以保证代码块或者方法在运行时,同一时刻只有一个方法可以进入临界区域,同时也可以保证共享变量的内存可见性
synchronized可以使用在三种情况:
1. 普通同步方法,锁是当前实例对象
2. 静态同步方法,锁是当前类的class对象
3. 同步方法块,锁是括号里面的对象
package com.tianmaying.crawler.impl; public class SynchronizedTest { public synchronized void test1(){} }
public void test2(){
synchronized (this){}
}
public static synchronized void test3(){}
使用javap -c SynchronizedTest反编译项目
可以看出来:
同步方法,同步静态方法:都是标注了方法是synchronized,并没有什么特殊标注,但是据文章《http://www.cnblogs.com/javaminer/p/3889023.html》,表示该方法的access_flags字段的synchronized标志位置为1
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
两个概念:java对象头、monitor
以上是关于java高并发之synchronized的主要内容,如果未能解决你的问题,请参考以下文章
Java——多线程高并发系列之synchronized关键字
Java开发之高并发必备篇——线程安全操作之synchronized