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

实例方法和实例变量的线程安全

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

实例方法和实例变量的线程安全

每个对象都有自己的类实例变量的副本-
在类的

static
所有实例之间共享的变量。实例变量不一定是线程安全的,原因是它们可能被调用异步实例方法的多个线程同时修改。

class Example {    private int instanceVariable = 0;    public void increment() {        instanceVariable++;    }}

现在,如果两个不同的线程同时调用

increment
,那么您将发生数据争用-
instanceVariable
在返回的两个方法结束时,可能会增加1或2。您可以通过将
synchronized
关键字添加到
increment
,或使用a
AtomicInteger
而不是
int
等来消除这种数据争用,但要点是,仅仅因为每个对象都获得了自己的类实例变量的副本,并不一定意味着变量可以在线程安全的方式-
这取决于类的方法。(例外是
final
不可变的变量,它不能以线程不安全的方式进行访问,缺少像序列化黑客这样的愚蠢的东西。)



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

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

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