Java成神之路(二十二)线程安全

线程安全

  1. 死锁
    两个或以上进程在执行中,由于竞争关系或者彼此通信而造成的一种阻塞线程,若无外力介入,他们都将无法推进下去
  2. 死锁的四个条件
    互斥条件:资源只有一个进程占用。
    请求和保持提哦啊叫:进程已经保持一个资源,但又提出新的资源请求,而该资源被已被其他进程占用,此时请求阻塞,但又对自己已获取的其他自己保持不妨
    不剥夺条件:进程已获取资源,在为使用完之前,不能被剥夺。
    环路等待条件:存在进程循环链,等待和请求进行循环。
  3. 线程安全与内存模型的关系:
    Java所有变量存储于主内存中,线程有工作内存,保存着线程所需变量的主内存副本拷贝,读取赋值都是在工作内存进行。
    线程在计算数据的时候,频繁的数据操作一般存在寄存器和高速缓存,这些数据要在适当的时候应该写回内存。
    由于线程之间数据不可见,而读取数据时都是从主存中复制,所以产生的线程不安全的问题,即高速缓存于主内存的同步问题。
    线程安全围绕原子性(不被打断。基本类型数据访问属于原子行为,A+=B不具有。),有序性(执行顺序),可见性(数据可见性,Volatile)
  4. 死锁如何排除
    (1)撤消陷于死锁的全部进程;
    (2)逐个撤消陷于死锁的进程,直到死锁不存在;
    (3)从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失。
    (4)从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值