Java多线程系列-------多线程的风险问题

这篇文章,我想说明一下关于Java多线程中会遇到的几种风险以及它们的 概念

1.死锁:

死锁的含义是指一组线程在执行过程中竞争资源导致的一种阻塞的现象,其原因是其中的每一个线程都在等待仅由该组中其他线程才可以释放的资源,这样每个线程都在等待其他线程释放自己的资源,而本身并不会释放资源,导致双方都在互相等待中形成一种阻塞的现象。

    2.饥饿:

多线程中的饥饿,其意思是,线程的调度如果只考虑线程优先级的话,那么在线程执行队列中,如果有高优先级的线程插入,该线程就会插入到低优先级线程的前方,这样可能导致低优先级的线程无法执行,最终造成低优先级线程无法获取cpu处理权二导致的“饥饿现象”。

    3.活锁:

活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。通俗的理解就是两个线程可能在竞争同样一组资源,线程A和线程B在竞争同一个资源时,采用退让原则,线程A让步给线程B,线程B同样让步给线程A。他们会同时竞争下一组资源。这样就导致他们会一直让步下去。也就是不停的尝试,失败,尝试,失败。但是活锁有可能可以解开,但是死锁不可以。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值