并发时单例对象中字段的更新问题

有个单例类,其中有一个表示时间戳的字段,并发访问判断时间戳是否过期,过期则更新时间戳。
请问这个字段存在线程安全问题吗?需要使用volatile关键字保证可见性吗?需要使用锁来保证线程安全吗?
做了大量的测试,在不使用volatile关键字时,如果有一个线程更新了该字段的值,其他线程可以获取最新值,按照java内存模型的理论,每个线程在自己的工作内存中都有一份主内存变量的拷贝,更新操作应该是在自己的工作内存中,其他线程又如何能得到更新后的值?还是该线程结束后,要强制写回主内存导致可见?还是由于单例对象的原因?
这里需要使用volatile关键字吗?
求解惑

#Java#
全部评论
如果用了锁或者synchronized的话,在释放锁之前也会强制把共享变量刷新到内存
点赞 回复 分享
发布于 2018-08-03 18:02

相关推荐

找到实习了 给了150一天 但是说是低代码 值得去吗
码农索隆:是在没实习,可去,待个一两周,不行就润呗
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
06-22 10:41
赣东学院 Java
程序员小白条:?周六晚上投,这是什么操作,专门找996起步的吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务