Java 线程启动是否会导致内存障碍(共享变量将保留在内存中)?

Java 线程启动是否会导致内存障碍(共享变量将保留在内存中)?,java,multithreading,Java,Multithreading,我想知道调用线程启动是否具有更新volatile或获取锁后的安全效果?新启动的线程将充当该特定线程的内存屏障 所有其他线程都必须同步访问(通过输入synchronizedblock或获取锁)以查看更新的非最终非易失性变量。引用 对线程的启动调用发生在已启动线程中的任何操作之前 以及列出的其他效果: 监视器的解锁(同步块或方法退出) 在每个后续锁(同步块或方法)之前发生 同一监视器的输入)。因为这种关系发生在关系之前 是可传递的,线程在解锁之前的所有动作 在任何线程锁定之后的所有操作之前发生

我想知道调用线程启动是否具有更新volatile或获取锁后的安全效果?

新启动的线程将充当该特定线程的内存屏障

所有其他线程都必须同步访问(通过输入
synchronized
block或获取锁)以查看更新的非最终非易失性变量。

引用

  • 对线程的启动调用发生在已启动线程中的任何操作之前
以及列出的其他效果:

  • 监视器的解锁(同步块或方法退出) 在每个后续锁(同步块或方法)之前发生 同一监视器的输入)。因为这种关系发生在关系之前 是可传递的,线程在解锁之前的所有动作 在任何线程锁定之后的所有操作之前发生 监视器

  • 对易失性字段的写入发生在每个后续字段之前 阅读同一领域的文章。易失性字段的写入和读取具有 与进入和退出监视器的内存一致性效果类似, 但不需要互斥锁定

所以是的,它也有同样的效果