线程安全与非线程安全的区别

话不多说,直接上例子,用例子说明一切。

ArrayList是非线程安全,Vector是线程安全的

线程A,B同时访问ArrayList C(非线程安全
他们都读出C的第一个元素是100(假设该元素是表示书库的库存),这时候A线程因为其他原因挂起了,而B还在执行
那么B线程显示还有100个书本库存,B根据他卖出的货量修改元素为:100-20=80.
这时候A线程回来了,他也开始继续执行,他开始修改,结果他修改为100-10=90
这时候就出现问题了,实际只有70本,显示的却是90

而vector不会,A访问的时候显示100,B再来访问就不能访问,当A修改完毕后,B才能访问,显示为80,这样就不会出现问题

总结下:同一个非线程安全(例如:ArrayList)可以被多个用户(线程)同时访问
而同一个线程安全(例如:vector),A线程在访问的时候,B线程不能访问而挂起,等A释放对vector的锁以后B再访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值