对线程安全的理解

  1. 方法中的变量不存在非线程安全问题,永远都是线程安全的,这是因为方法内部的变量是私有的特性造成的。
  2. synchronized锁加在方法上,锁的是对象。效果同synchronized(this)
  3. synchronized加在静态方法上,锁的是类。效果同synchronized(class.Class)。
  4. 多个对象多个锁。两个线程分别访问同一个类的两个不同实例的相同名称的同步方法,效果却是以异步的方式运行的。关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法当作锁,哪个线程先执行带synchronized关键字的方法,哪个线程就持有该方法所属对象的锁Lock,那么其他线程只能呈等待状态,前提是多个线程访问的是同一个对象。但如果多个线程访问多个对象,则JVM会创建多个锁。同步的单词为synchronized,异步的单词为asynchronized。
  5. 加不加锁主要看:执行方法时,方法内有没有数据可能在其他地方(其他线程)被修改。例如类变量,数据库读写。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值