栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否保证在一个线程中对非易失性成员变量的分配可以在另一个线程中看到?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否保证在一个线程中对非易失性成员变量的分配可以在另一个线程中看到?

可以由另一个线程修改,但这不是保证。这也不是线程安全的。要使变量保证从另一个线程查看,您需要执行以下任一操作

仅在以下情况下,才能保证一个线程对字段所做的更改仅对其他线程可见:

  • 写入线程释放同步锁,而读取线程随后获取该相同的同步锁。
  • 如果将一个字段声明为易失性字段,则在写入
    线程执行任何进一步的内存操作之前,写入该线程的任何值都会被写入线程并使写入线程可见(即,出于
    手头的目的,将立即刷新该字段)。读取器线程必须
    在每次访问时重新加载volatile字段的值。


  • 线程第一次访问对象的字段时,它将看到该字段的初始值或自其他线程写入以来的值。
  • 线程终止时,所有写入的变量都将刷新到主内存。例如,如果一个线程使用Thread.join在另一个线程的终止上进行同步,则可以保证看到该
    线程产生的效果(请参见第4.3.2节)。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454676.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号