
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
锁的应用在线程安全领域是非常重要的一个编程开发技术,而本文我们就通过案例分析来了解一下,软件开发死锁产生原因与解决方法。
1.概念
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
你没看错,死锁并不止于线程,说进程也没毛病,因为,死锁往往是各进程之间的线程相互抢夺资源导致的。
总结下来就是:死锁是必然发生在多操作者(M>=2个)情况下,争夺多个资源(N>=2个,
且N<=M)才会发生这种情况。
2.死锁现象
简单顺序死锁
由于锁顺序定义不一致导致死锁。
3.如果实际中出现了死锁怎么解决
死锁的危害
1、线程不工作了,但是整个程序还是活着的。
2、没有任何的异常信息可以供我们检查。
3、一旦程序发生了发生了死锁,是没有任何的办法恢复的,只能重启程序,对生产平台的程序来说,这是个很严重的问题。
4.其他的概念
活锁
两个线程在尝试拿锁的机制中,发生多个线程之间互相谦让,不断发生同一个线程总是拿到同一把锁,在尝试拿另一把锁时因为拿不到,而将本来已经持有的锁释放的过程。
解决办法:每个线程休眠随机数,错开拿锁的时间。
线程饥饿
低优先级的线程,总是拿不到执行时间。
5.线程安全的单例模式
饿汉模式
在声明的时候就new这个类的实例,因为在JVM中,对类的加载和类初始化,由虚拟机保证线程安全。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。