如何解决线程安全问题?有几种方式?synchronized与lock有什么异同?

1.谈谈你对同步代码块中同步监视器和共享数据的理解以及各自要求?
同步监视器:俗称锁。①任何一个类的对象都可以充当;②多个线程共用同一把锁。
共享数据:多个线程共同操作的数据。

2.什么情况会产生线程安全问题?
当多个线程同时共享同一个数据,做写的操作时,可能会发生数据冲突问题,即产生线程安全问题。读的操作不会发生线程安全问题。
(比如A在银行取钱,查询起初余额balance=5000;准备取3000;在做取钱操作的时候发生阻塞了,此时A女朋友也用A的账户查询balance=5000;开始取4000,balance更新为1000,取钱成功;A阻塞完成,开始取3000,balance更新为-2000,取钱成功。

3.如何解决线程安全问题?有几种方式?
当线程A在操作共享数据时,其他进程不能参与进来,直到线程A操作完成时,其他线程才可以开始操作共享数据。这种情况即使线程A出现了阻塞也不能被改变。
使用synchronized同步机制或lock锁方式解决。
有两种方式:1.synchronized同步代码块/同步方法

//同步代码块:
synchronized(/*同步监视器*/
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值