java多线程中线程安全和非线程安全

线程安全是指多个线程操作同一个对象,不会产生不一致的结果,非线程安全就可能出现每次的执行结果都不一致。

线程安全方式:

1.使用volatile关键字修饰的变量多所有线程可见,当一个线程修改了变量的值,新的值会立即从当前线程工作空间同步到主内存当中,而其他线程读取这个变量的时候,也会从主内存中拉取最新的变量值,但如果对该变量的操作含有原子操作时,不能保证线程安全。

2.使用很多synchronized关键字来同步控制,所以必然会导致性能的降低

注意非线程安全不是说不安全,有人在使用过程中有一个不正确的观点:我的程序是多线程的,不能使用ArrayList要使用Vector,这样才安全。非线程安全并不是多线程环境下就不能使用。注意我上面有说到:多线程操作同一个对象。注意是同一个对象。如果是在主线程中new的一个ArrayList然后多个线程操作同一个ArrayList对象,那就时非线程安全,如果是每个线程中new一个ArrayList,而这个ArrayList只在这一个线程中使用,那么肯定是没问题的。


示例代码参考:http://blog.csdn.net/xiao__gui/article/details/8934832




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值