网站首页 美食营养 游戏数码 手工爱好 生活家居 健康养生 运动户外 职场理财 情感交际 母婴教育 时尚美容

对java变量线程安全的理解

时间:2024-10-30 00:44:34

1、变量的分类:类变量,实例变量,局部变量(方法里面的变量)2、假设,一个主线程类,一个子线程类。主线程中开启多个子线程。子线程没有再开启子线程。3、分析每一种变量(以下的分析基于2中的假设)(1):首先,对变量的读操作不会出现问题,写操作可能会出现问题。

2、(2):类变量(主类), 可能会出现线程安全问题(如果子类的run方法对类变量(主类)进行写操作,会发生线程安全问题;否则不会)。看下面的例子,在主线程中定义一个类变量,然后在子线程中对其值加1。如果没有线程安装问题结果应该是3000,结果是2997,说明有3个线程读了脏数据。

对java变量线程安全的理解对java变量线程安全的理解对java变量线程安全的理解

4、(4):实例变量(主类),可能会出现线程安全问题,如果主类的实例变量,在开启子线程时,将此变量传递给了子线程,并且子线程有写操作,就会出现线程安全问题。(5):实例变量(子类),不会出现线程安全。因为此变量只属于某个线程,其他线程不会访问到(每个线程都会创建自己的一份,不会共享)。实例变量是一个类的非静态属性:

对java变量线程安全的理解

6、测试(6)。在主线程中定义一个局部变量,然后将其传入子线程,并在子线程中对其值加1。如果没有线程安装问题结果应该是8000,结果是7998,说明有2个线程读了脏数据。

对java变量线程安全的理解对java变量线程安全的理解
© 海能知识库