cpu明明已经有了mesi,为什么java里面还会出现线程安全问题

cpu明明已经有了mesi,为什么java里面还会出现线程安全问题

我是这么理解的,操作一般分3个步骤,读取数据,数据处理,数据写入。
线程1、线程2同时进行处理。线程1修改完成之后。线程2正好处于数据处理之后,数据写入之前。虽然会通知数据已经无效。但是线程2已经对数据处理过了。不需要再读取数据。即使线程1改了数据,也对线程2没有影响。