工学1号馆

home

synchronized同步方法

Wu Yudong    March 01, 2016     Java   1,566   

本文主要介绍synchronized同步方法

1、方法内部的变量为线程安全

方法内部的私有变量为线程安全的

2、实例变量非线程安全

如果多个线程共同访问1个对象的实例变量,则有可能出现非线程安全的问题。这时候只要在类中访问实例变量的方法前面加上关键字synchronized即可解决问题

3、多个对象多个锁

哪个线程先执行带有synchronized的方法,哪个线程就持有该方法所属对象的Lock,那么其他线程就只能处于等待状态。但是如果多个线程访问多个对象,则JVM会创建多个锁

4、synchronized方法与锁对象

A线程先持有object对象的Lock锁,B线程可以以异步的方式调用object对象中的非synchronized类型的方法

A线程先持有object对象的Lock锁,B线程如果在这个时候调用object对象中的synchronized类型的方法则需要等待,也就是同步

5、脏读

发生脏读的情况是在读取变量的时候,此值已经被其他的线程更改过了,使用synchronized同步解决

6、synchronized锁重入

当一个线程得到一个对象锁后,再次请求此对象锁时是可以再次得到该对象的锁,也证明了在一个synchronized方法/块的内部调用本类的其他synchronized方法/块时,是永远可以得到锁的

可重入锁也支持在父子类继承环境中,当存在父子类继承关系时,子类是完全可以通过“可重入锁”调用父类的同步方法的

7、出现异常,锁自动释放

8、同步不具备继承性

如果文章对您有帮助,欢迎点击下方按钮打赏作者

Comments

看一看来瞧一瞧,这个博客真是好!


    @益群网
    好在哪里


Cancel reply
To verify that you are human, please fill in "七"(required)