gho*_*der -1 java multithreading synchronization
我是多线程的初学者,有一个疑问:
java中的传统同步(使用synchronized关键字)是否有其他替代方案,因为它会影响应用程序的性能?
正如其他人所指出的,这取决于您想要避免什么,以及您想要通过多线程实现什么。
如果您的意思是“是否有一种零开销的方法来使用共享资源进行多线程处理”,那么答案几乎肯定是“否”。如果两辆朝不同方向行驶的汽车同时接近十字路口,其中一辆将不得不等待另一辆 - 这两辆汽车不可能同时占据相同的空间。这就是为什么我们有停车标志和交通灯。(或者,还有诸如交通环岛之类的东西,但即使是那些也有一些开销 - 你真的不能全速穿过它们,就好像它们不在那里一样)。
除了使用这种类型的同步之外,还有很多方法可以执行异步和并行操作:
还有许多其他类型的并发,例如参与者模型。
如果使用得当,它们可以帮助最大限度地减少开销,并可能减少所需的显式锁定和同步量。不过,它们都有开销。
TL;DR无论您做什么,您都会产生开销 - 只需选择可为您的特定用例带来最小开销的设计和基元。
| 归档时间: |
|
| 查看次数: |
1556 次 |
| 最近记录: |