关于解决 共享资源竞争

共享资源一般是以对象的形式存在的内存片段,但也可能是文件,输入\输出端口,或者打印机。要控制对共享资源的访问,的先把它包装进一个对象。然后把所有要访问这个资源的方法标记为synchronized。如果某个人物处于一个对标记为synchronized的方法的调用中,那么在这个线程从该方法返回前,其他所有要调用类中任何标记为synchronized方法的线程都会被阻塞。

//中间这段为个人简单总结:

一个共享对象中所有标记为synchronzied的方法共享一个锁。一个线程可以多次获取对象的锁,比如:一个对象在同一个对象上的其他标记为synchronzied方法,后者又调用了同一个对象上的另一个方法。

注意:在使用并发时,将域设置为private是非常重要的,否则,synchronzied关键字就不能防止其他线程直接访问域,这样就会产生冲突。(现在终于有所体会,之前一直不明白为何要这么做。)

//总结结束


什么时候应该用同步呢? 可以使用Brian的同步规则:

如果你正在写一个变量,它可能接下来将会被另一个线程读取,或者正在读取一个上一次已经被另一个线程写过的变量,那么你必须使用同步,并且,读写线程都必须用相同的监视器同步。

上原文(照片喳喳的):

011418_8Psa_1466553.jpg


认识能够反应实践,同时也能够指导实践,正确的认识能够积极的推动实践的发展。


















转载于:https://my.oschina.net/demoXc/blog/324457

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值