什么是线程安全的(原创)

当多个线程访问一个类时 ,如果不用考虑这些线程在运行时环境下的调度和交替执行,并且不需要额外的同步以及在调用方式代码不必作其他的协调,这个类的行为仍然是正确的,那么称为线程安全的。


一个对象的状态 就是它的数据 ,存储在状态变量中,比如实例域或者静态域,对象的状态还包括了其他附属对象的域。

所谓共享,就是指的是一个变量可以被多个线程访问;所谓可变就是指变量的值在器生命周期内可以改变。我们讨论的线程安全性好像是关于代码的,但是我们真正要做的事情是在不可控制的并发访问中保护数据。

一个对象是否应该是线性安全的取决于它是否被多个线程访问。线程安全的这个性质,取决于程序中如何使用对象,而不是对象完成了什么。保证对象的形成安全性需要使用同步来协调对其他可变状态的访问。如果做不到这一点,就会导致肮脏数据的参数的产生和其他不可预见的结果。



在没有同步的情况下,如果多个线程访问了同一个变量,你的程序就存在隐患了。有三个方法来修复它:

不要跨线程共享数据

使用状态变量变为不可不的那种。

在任何访问状态下变量的时候使用同步

 

 

推荐并发线程类的java书籍<JAVA并发编程实践> 美国人写的 韩 以及 方两个人翻译的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值