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

猜你喜欢

转载自www.cnblogs.com/zhangchiblog/p/8934088.html