
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了Java编程开发线程安全的一些基础知识等内容,其中就包含了Java编程锁的应用,今天我们就再来了解一下,Java编程锁的类型都有哪些。
1、死锁
多个线程,各自占对方的资源,都不愿意释放,从而造成死锁,A线程需要等待的锁被B线程占用,而B线程需要的等待的锁被A线程占用,所以相互都不释放,于是就陷入了死锁。
2、饥饿
多个线程访问同一个同步资源,有些线程总是没有机会得到互斥锁,这种就叫做饥饿。
出现饥饿的三种情况
高优先级的线程吞噬了低优先级的线程的CPU时间片
理论上来说,线程优先级高的线程会比线程优先级低的线程获得更多的执行机会,但是java的线程优先级不是绝对出现这样的效果。
一般而言:优先级高的出现频率会比优先级低的高很多
不同的操作系统对线程的优先级支持是不同的,规定是在1-10之间,java通过3个常量来屏蔽这种操作系统的底层差异化。
线程被永久阻塞在等待进入同步代码块的状态
等待的线程永远不被唤醒
建议大家采用公平锁来代替synchronized这种互斥锁
3、活锁
两个人在走廊上碰见,大家都互相很有礼貌,互相礼让,A从左到右,B也从从左转向右,发现又挡住了地方,继续转换方向,但又碰到了,反反复复,一直没有机会运行下去。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。