java-并发-线程安全

来源:互联网 发布:忻州广电网络电视台 编辑:程序博客网 时间:2024/05/29 11:22

线程安全

1、 什么是线程安全?

1) 当多个线程访问一个类时,如果不用考虑这些线程在运行情况下的调度和交互执行。并且不需要额外的同步及在调用代码不必做其他的协调,这个类的行为仍然正确。那么称这个类是线程安全的。
2)对于线程安全类的实例进行顺序或者并发的一系列操作,都不会导致实例处于无效状态。
3)线程安全的类封装了任何必要的同步,因此客户不需要自己提供。
4)无状态对象永远是线程安全的。
无状态:不包含域也没有引用其他类的域。

2、原子性

假设有操作A和B,如果从执行A的线程的角度看。当其他线程执行B时,要么B全部执行完成,要么B一点也没有执行。这样的A,B互为原子操作。
一个原子操作是指:该操作对于所有的操作,包括它自己,都满足前面描述的状态。
非原子操作的两种情形:
1. read-modify-write: 读-改-写count++
2. check-then-act: 检查在运行,最常见的竞争条件,惰性加载单例模式
利用已有线程安全对象管理类java.util.concurrent.atomic

3、锁

对于每个可被多线程访问的可变状态变量,如果所有访问他的线程在 执行时都占用同一个锁,那么这种情况下我们称这个变量是由这个锁保护的。
每个共享的可变变量都需要有唯一一个确认的锁保护。而维护这应该清楚这个锁。
对于每一个涉及多个变量的不变约束,需要同一个锁来保护其所有变量

4、性能和活跃度

通常简单性和性能之间是相互牵制的。实现了一个同步策略时,不要过早的为了性能而牺牲了简单性(这是对安全性潜在的妥协)
有些耗时的计算或操作,比如网络或者控制台I/O,难以快速完成。执行这些操作期间不要占有锁。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机上打开页面出现广告怎么办 电脑下面的任务栏变宽了怎么办 酷派手机总是出现广告怎么办 电脑弹出的热点新闻关闭不了怎么办 京东老是弹广告怎么办 电脑右下角出现无法显示网页怎么办 电脑右下角广告关不了怎么办 qq邮箱被冻结了怎么办 手机qq群自动发广告怎么办 济宁学院考研和上课冲突怎么办 考研但是大四上课多怎么办 试管促排卵泡少怎么办 京东退货卖家拒收怎么办 京东退货被卖家拒收怎么办 期货平台跑路了怎么办 浮云牧场没房了怎么办 融资股票停牌了怎么办 买入的股票停牌怎么办 淘宝抢到便宜货老板不发货怎么办 微信代购买到假货了怎么办 微信代购收到假货怎么办 苹果商店下载很慢怎么办 谷歌商店下载东西慢怎么办 买家说少发货了怎么办 人肉代购被海关扣了怎么办 韩国代购被海关扣了怎么办 爱奇艺开通自动续费忘了账号怎么办 小米手机云储存空间不足怎么办 路由器被黑了打不开网页怎么办 致人轻伤跑了怎么办 轻伤对方要30万怎么办 老公用老婆的钱怎么办 想注册个公司要怎么办 域名续费不知道找谁怎么办 代收快递弄丢了怎么办 货到付款的快递人不在怎么办 快递送货上门人不在怎么办 ems快递签收人不在怎么办 快递被别人取了怎么办 怎么办快递宗和收发点 快递电话写错了怎么办