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关键字

多线程高并发之Synchronized锁及其膨胀

Java开发之高并发必备篇——线程安全操作之synchronized

Java开发之高并发必备篇——线程安全操作之synchronized

Java高并发之同步异步

JAVA高并发程序设计学习:Synchronized同步代码块具体使用方法