高并发编程-05-活跃性问题-死锁,活锁,饥饿
2018-01-12 14:02
323 查看
死锁,饥饿,活锁1,死锁多个线程,各自占对方的资源,都不愿意释放,从而造成死锁工具:使用jconsole可以检测程序运行的死锁线程2,饥饿多个线程访问同一个同步资源,有些线程总是没有机会得到互斥锁,这种就叫做饥饿。出现饥饿的三种情况a,高优先级的线程吞噬了低优先级的线程的CPU时间片理论上来说,线程优先级高的线程会比线程优先级低的线程获得更多的执行机会,但是java的线程优先级绝对出现这样的效果。经过测试,优先级高的出现频率会比优先级低的高很多不同的操作系统对线程的优先级支持是不同的,规定是在1-10之间,java通过3个常量来屏蔽这种操作系统的底层差异化。b,线程被永久阻塞在等待进入同步代码块的状态c,等待的线程永远不被唤醒如何避免饥饿问题a,设置合理的优先级b,使用公平锁来代替synchronized这种互斥锁3,活锁举个例子,两个人在走廊上碰见,大家都互相很有礼貌,互相礼让,A从左到右,B也从从左转向右,发现又挡住了地方,继续转换方向,但又碰到了,反反复复,一直没有机会运行下去。
相关文章推荐
- 高并发编程-04-活跃性问题-死锁,活锁,饥饿
- 并发编程 - 死锁,活锁和饥饿
- 并发编程8.避免活跃性问题与性能思考
- 多线程编程的锁问题解析(锁竞争死锁活锁及Date Race等)
- Java并发编程之锁的活跃性问题
- 【并发编程】活跃性问题
- 进程、线程知识点总结和同步(消费者生产者,读者写者三类问题)、互斥、异步、并发、并行、死锁、活锁的总结
- Java并发编程之锁的活跃性问题
- Java并发编程札记-(一)基础-05线程安全问题
- 进程、线程知识点总结和同步(消费者生产者,读者写者三类问题)、互斥、异步、并发、并行、死锁、活锁的总结
- Java 并发编程之图形界面应用程序及死锁问题
- 并发编程实战学习笔记(七)——避免活跃性问题
- java高并发学习记录-死锁,活锁,饥饿
- Java并发编程的艺术(一)——并发编程需要注意的问题
- java编程思想之并发(死锁)
- 深入浅出解析mssql在高频,高并发访问时键查找死锁问题
- 多线程编程之线程死锁问题 转载
- linux 驱动编程___竞态/并发问题___自旋锁
- 转:【Java并发编程】之十二:线程间通信中notifyAll造成的早期通知问题(含代码)
- Java并发编程:线程死锁