开发者社区> 问答> 正文

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

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

展开
收起
蛮大人123 2016-03-04 18:52:58 2798 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    1.如果只是读操作,没有写操作,则可以不用加锁,此种情形下,建议变量加上final关键字;
    2.如果有写操作,但是变量的写操作跟当前的值无关联,且与其他的变量也无关联,则可考虑变量加上volatile关键字,同时写操作方法通过synchronized加锁;
    3.如果有写操作,且写操作依赖变量的当前值(如:i++),则getXXX和写操作方法都要通过synchronized加锁。

    2019-07-17 18:52:44
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载