java多线程访问成员变量问题

局部变量:一般指方法参数,或者方法中定义的变量
成员变量:class类对象具备的对象,比如student类,有name、age、sex、各类学科的分数score等,属于个人的信息。

多个线程访问成员变量,可能出现线程1修改了成员变量,线程2也修改了成员变量,但是线程2修改后的值不生效,和线程1的值一样,存在执行时序先后顺序,导致返回值错误,不是自己想要的。

android postdelay必须要使用局部变量,不能使用成员变量。局部变量默认final的,不能修改。
在这里插入图片描述

神奇的打印,for循环中主线程延迟打印,数据一样的,只会打印2次,猜测handle postdelay,队列中做了优化处理。
在这里插入图片描述

多个子线程方式:
在这里插入图片描述

handle postdelayed做个优化处理,相同的返回最多输出2次:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

成员变量,只有最后1次的修改生效,多个相同打印2次
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

内部类访问 成员变量
在这里插入图片描述

多线程访问成员变量,非final 存在线程安全问题,数据被修改:
在这里插入图片描述

多线程局部变量,没有安全问题:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值