Java中在使用多线程时,调用的方法计算比较复杂。为了避免线程之间数据混乱,使用了Lock,但是这就导致失去了多线程应该有效果,有什么方法能够解决吗?
3 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
尽量减少Lock的范围,尽量早UnLock,比如只在需要共享的数据之间Lock,这样其他地方可以实现多线程的并行。或者就是把数据尽量拆分开,不共享
慕容3067478
TA贡献1773条经验 获得超3个赞
多线程加锁的话,你就变成了单线程写入操作了吧,那样多线程就没有什么意义了,一般如果是求和之类的,用原子加减之类的方法,就能避免并发冲突的情况。你可以找一下原子加之类的方法
慕莱坞森
TA贡献1810条经验 获得超4个赞
这就要看Lock的颗粒度范围了,如果你是对整个处理进行同步阻塞,那对这一整个处理而言就失去了并行的意义;
但你可以只针对共享资源相关的部分处理进行Lock,这样还是可以达到提高效率的目的的。
- 3 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消