问答详情
源自:-

EnergySystem 里面的lockObj 换成energyBoxes

把lockObj换成energyBoxes应该也是可以的吧,加锁的时候只要锁住被操作的共享资源,也就是EnergySystem 
里面的全局变量energyBoxes也可以吧,比如EnergySystem  里面有两个类似energyBoxes的共享资源---->x,有其他的方法操作另外的共享资源x,如果只是lockObj加锁,但是不同方法操作的是不同的资源这样会不会效率特别低呢?因为两个资源之间根本没有关系,但是锁却是同一个--lockObj,假设我们锁在相应的共享资源也就是energyBoxes和另外一个共享资源x上,那么线程并发操作两个资源时之间没有干扰。这样会不会更好点一点?还是说需要再多创建一个针对共享资源X类似lockObj的锁? 谢谢授课老师,请您百忙之中抽出一点时间

提问者:qq_不走_0 2015-01-14 10:27

个回答

  • Arthur
    2015-01-14 16:43:58

    首先从语法上,lockObj换成energyBoxes是可以的,不过易读性是否降低你要考虑了。第二点,效率要让位于安全。如果多个资源是无关的,自然可以不同的锁来互斥(那为什么要放在同一个类里面呢?恐怕要反思设计了),如果资源对线程的访问有严格的互斥约束,那么就不能有多个锁对象。

  • 技能银行
    2015-01-14 14:39:06

    这里真的不错,学的很多

  • txp_mooc
    2015-01-14 10:31:50

    学习了很多