synchronized同步方法概述

synchronized同步方法

1、“线程安全”与“非线程安全”:
非线程安全情况:多个线程对同一个对象中的实例变量进行并发访问时,产生脏读。
解决方法:对实例变量的值进行同步处理。

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

3、实例变量非线程安全
解决方法:在相应类中的方法前加关键字synchronized
两个线程访问同一个对象中的同步方法,一定是线程安全的。

4、synchronized取得的锁都是对象锁
线程如何取得对象锁:
多个线程访问同一个对象,哪个线程先执行带synchronized关键字的方法,哪个线程就持有该方法所属对象的锁Lock,其他线程等待状态。

5、A线程先持有对象的Lock锁,
1)B线程调用同一个对象中非synchronized类型方法:以异步方式调用;
2)B线程调用同一个对象中任意一个synchronized类型方法:需等待A线程释放对象锁后调用,也就是同步。

6、synchronized关键字声明的方法一定是排队运行的。
注意:只有共享资源的读写访问才需要同步化。

7、synchronized关键字具有锁重入功能
就是在使用synchronized关键字情况下,一个线程得到对象锁后,再次请求该对象锁时可以再次得到该对象的锁。
“可重入锁”:自己可以再次获取自己的内部锁。
当存在父子类继承关系时,子类完全可以通过“可重入锁”调用父类的同步方法。

8、同步不可以继承

来源:《Java多线程编程核心技术》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值