[Java并发编程之美]第2章 并发编程的其他基础知识 补充知识笔记

synchronized与volatile关键字

synchronized有两种作用域:

1.作用域为方法:这种作用域下,锁住的对象为this,也就是当前对象;如果方法是静态的,锁住的是当前的Class类对象。

public synchronized void synchronizeMethod() {
    // do sth
}

2.作用域为代码块:锁住的对象为synchronized之后指定的对象,下例中即为resource。

public static void main() {
    synchronized(resource) {
        // do sth
    }
}

在真正执行的时候,两者都是会去获取底层monitor锁(监视器锁)执行。

猜你喜欢

转载自www.cnblogs.com/coding-gaga/p/12404148.html
今日推荐