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

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

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

相关推荐

小浪_Coding:个人技能一条测试没有
点赞 评论 收藏
分享
04-03 22:39
重庆大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务