volatile加原子操作能取代synchronized和锁吗?答案是否定的。比如需求如果是,在并发环境下判断票数是否大于零,如果大于零就买票。 判断加更新总体是个原子操作。这种情况只能用锁和synchronized。volatile加原子操作解决不了问题。其实想彻底解决并发环境的问题,只 能用synchronized和锁。volatile和原子操作只能在有些特殊的情况下解决一点小问题(比如不加判断直接更新),当问题变得复杂时,volatile和原子操作就完全不能胜任了。
更多请见:http://www.mark-to-win.com/tutorial/java_6_CanVolatileReplaceSynchronized.html
本文探讨了在并发环境中,volatile加原子操作是否能替代synchronized和锁。结论指出,对于复杂的并发问题,如需确保判断和更新操作的原子性,仅靠volatile和原子操作是不够的,必须使用synchronized或锁来保证。详细解析了不同场景下各种并发控制机制的适用性。

9万+





