同样附上百度百科。很复杂。
线程,大家都懂,程序运行起来后,执行代码的东西。
多线程呢,由多个子线程,同时处理,程序运行更快捷。
速度是快了,但是会有一个问题,共享资源。就会出现资源互相占用,抢资源的问题
比如说,两个子线程,同时运行一个程序,比如同时算数,加到1个亿。这个时候就会出现打架,或者卡住的现象。
这个时候就需要互斥锁。相当于大家排队上厕所。如果这个厕所门上没锁,那谁来了,都得进一下。但是如果有锁呢,可以很有效的避免这种尴尬的局面。
但是还有一种尴尬的局面,就是死锁。
就好像,两个人搞对象,吵架了,男女置气,谁也不理谁,都等着对方先道歉。
同样,两个子线程,A需要B先执行,B需要A先执行,但是A B都已经锁上了,这种情况就是死锁。卡住了说白了。
解决方法,添加超时 拿厕所举例,你上一会儿,时间太长,门外有人敲门让你出来,他进去。
另外一种,银行家算法。大概意思就是从源头阻止这种情况的发生。有种金融里面,止损的感觉。