qq_不走_0
2015-01-14 10:27
把lockObj换成energyBoxes应该也是可以的吧,加锁的时候只要锁住被操作的共享资源,也就是EnergySystem
里面的全局变量energyBoxes也可以吧,比如EnergySystem 里面有两个类似energyBoxes的共享资源---->x,有其他的方法操作另外的共享资源x,如果只是lockObj加锁,但是不同方法操作的是不同的资源这样会不会效率特别低呢?因为两个资源之间根本没有关系,但是锁却是同一个--lockObj,假设我们锁在相应的共享资源也就是energyBoxes和另外一个共享资源x上,那么线程并发操作两个资源时之间没有干扰。这样会不会更好点一点?还是说需要再多创建一个针对共享资源X类似lockObj的锁? 谢谢授课老师,请您百忙之中抽出一点时间
首先从语法上,lockObj换成energyBoxes是可以的,不过易读性是否降低你要考虑了。第二点,效率要让位于安全。如果多个资源是无关的,自然可以不同的锁来互斥(那为什么要放在同一个类里面呢?恐怕要反思设计了),如果资源对线程的访问有严格的互斥约束,那么就不能有多个锁对象。
这里真的不错,学的很多
学习了很多
深入浅出Java多线程
186088 学习 · 464 问题
相似问题