各位观众老爷,大家好!我是你们的老朋友,今天咱们来聊聊 Java 并发编程里一个听起来玄乎,但其实很重要的东西:Java 内存一致性模型(Memory Consistency Models),特别是其中的 Sequential Consistency 和 Release Consistency,以及它们跟并发可见性之间的爱恨情仇。 开场白:并发的“乱”世 想象一下,你在厨房做饭,你老婆(或者老公,或者室友,别杠,这里只是举例子)在客厅看电视。你切菜需要用到冰箱里的食材,你从冰箱里拿出食材,然后开始切菜。而你老婆想知道你今天晚上做什么好吃的,过来问你。 如果你们俩的行为都按照时间顺序来,一切都井然有序。但如果你们俩都想抄近路,比如你一边切菜一边把冰箱门开着,方便下次拿东西;你老婆一边问你做什么菜,一边还在刷手机,时不时回个微信。 这时候,问题就来了: 你可能忘记关冰箱门,导致冰箱里的东西坏掉。 你老婆可能因为看手机没听清你说了什么,导致晚饭没法顺利进行。 这就是并发的“乱”世。多个线程(或者多个处理器)同时访问共享数据,如果不加以控制,就会导致数据不一致,程序行为不可预测。而内存一致性模 …
继续阅读“Java `Memory Consistency Models` (`Sequential Consistency`, `Release Consistency`) 与并发可见性”