
面试官问线程的问题. 我以前从未总结过如何回答,也无法立即说出来. 回来再详细总结一下,下次您不会停止知道从哪里开始
请仔细考虑,首先多线程避免死锁,您应该了解什么是线程,资源分配的基本单位以及程序执行流程的最小单位. 线程可以共享内存资源,而多线程可以解决CPU空闲的问题. 多线程可以实现任务的并发执行并提高处理能力. 多个线程将具有共享资源. 为了确保资源可以互斥,您必须锁定资源. 拥有资源锁的线程可以访问资源. 每个对象都有自己的锁.

死锁: 是指由于竞争资源或彼此通信而由两个或多个进程引起的阻塞现象. 如果没有外力,他们将无法前进
如何避免死锁:

死锁条件:
僵局的四个必要条件

在计算机科学本科教科书中,通常会介绍死锁的四个必要条件. 这四个条件是必不可少的,或者只要其中任何一个被破坏,就不会发生死锁. 让我们回顾一下,这四个条件是:
•互斥: 有这样一种资源,一次只能分配给一个线程(也称为线程);

•保持(Hold and wait): 当请求的资源已被占用并且线程被阻塞时,资源占用者不仅不需要释放资源,而且可以继续请求更多资源;
•无抢占: 无法强制剥夺线程获得的互斥资源. 换句话说,只有资源占用者才能自己释放资源;
循环等待: 循环线程以不同的顺序获取互斥资源,从而形成了循环等待的情况. 想象一下,在由多个线程组成的循环链中,每个线程都在等待. 下一个线程释放它所拥有的资源.
解除僵局的必要条件
不难看出,在死锁的四个必要条件中,第二,第三和第四条件相对容易消除. 通过引入交易机制,通常可以消除第二和第三条件. 该方法将所有锁定操作视为事务. 一旦开始锁定,就可以回滚所有操作多线程避免死锁,并且锁定管理器可以检测到死锁. ,并剥夺资源(回滚事务). 这种方法有时会导致更大的开销,并且需要对锁定模式进行更多更改.
消除第四个条件更容易且成本更低. 具体来说,此方法规定锁定顺序必须一致. 具体来说,我们为锁人为分配了类似于“水位”的方向性. 无论已经持有任何锁,线程的所有锁操作都必须按照从低到高(或从高到低)的一致顺序执行,并且系统中只允许一个顺序.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-171835-1.html
以挽回面子