同步实例方法

同步实例方法

修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁

方法上添加synchronized就叫做同步方法,例如public synchronized void draw(double amount){}

注意:在一个类对象中所有的同步方法是互斥的

  • 只要有一个线程进行了当前类对象(只能一个对象)的同步方法,则不允许其它线程在进入当前这个对象的任何同步方法,但是允许进入非同步方法
  • 同样当前线程则可以进入当前类对象的其它同步方法,也允许进入非同步方法,当线程进入同步方法,则获取同步锁,离开同步方法则释放同步锁
  • 这个锁就是当前类对象

这种方法不是最佳选择,因为这里的同步处理颗粒度太大了(所有当前对象中的同步处理方法都是互斥的),会影响并发性

线程安全的类:是通过使用同步方法的类,同步监视器是this

  • 该类的对象可以被多个线程安全地访问
  • 每个线程调用该对象的任意方法之后都将得到正确结果
  • 每个线程调用该对象的任意方法之后,该对象状态依然保持合理状态

StringBuilder和StringBuffer

  • StringBuilder是线程不安全的类,数据不安全,但是并发执行效率高,一般用于定义临时变量
  • StringBuffer是线程安全的类,数据安全,但是并发执行效率差,一般用于定义属性
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值