您好,匿名用户
随意问技术百科期待您的加入

java 多线程读一个变量需要加锁吗

+2 投票

如题,java里面多线程读一个变量(const, static等等),不修改该变量,需要加锁或是用synchronized定义一个get方法吗? 这种情况应该怎么处理 求教

用户头像 提问 2013年 7月15日 @ Xin Zhao 上等兵 (320 威望)
分享到:

1个回答

+1 投票
 
最佳答案
  1. 如果只是读操作,没有写操作,则可以不用加锁,此种情形下,建议变量加上final关键字;
  2. 如果有写操作,但是变量的写操作跟当前的值无关联,且与其他的变量也无关联,则可考虑变量加上volatile关键字,同时写操作方法通过synchronized加锁;
  3. 如果有写操作,且写操作依赖变量的当前值(如:i++),则getXXX和写操作方法都要通过synchronized加锁。
用户头像 回复 2013年 7月15日 @ Jayce 上等兵 (271 威望)
选中 2013年 7月15日 @Saber
提一个问题:

相关问题

+2 投票
1 回复 195 阅读
用户头像 提问 2013年 2月4日 @ Maokai 上等兵 (292 威望)
0 投票
1 回复 27 阅读
0 投票
1 回复 46 阅读
用户头像 提问 2012年 12月1日 @ Rammus 上等兵 (334 威望)
0 投票
1 回复 29 阅读
用户头像 提问 2012年 12月1日 @ Lux 上等兵 (267 威望)
0 投票
1 回复 20 阅读
用户头像 提问 2014年 4月3日 @ 阿尔托莉雅 下士 (587 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...