![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
根正苗红鹏哥哥
这个作者很懒,什么都没留下…
展开
-
关于死锁
一、什么是死锁? 死锁是由于两个或以上的线程互相持有对方需要的资源,导致这些线程处于等待状态,无法执行。 二.产生死锁的四个必要条件 1.互斥性:线程对资源的占有是排他性的,一个资源只能被一个线程占有,直到释放。 2.请求和保持条件:一个线程对请求被占有资源发生阻塞时,对已经获得的资源不释放。 3.不剥夺:一个线程在释放资源之前,其他的线程无法剥夺占用。 4.循环等待:发生死锁时,线程进入死循环,永久阻塞。 三.产生死锁的原因 1.竞争不可抢占性资...原创 2020-09-26 18:32:12 · 119 阅读 · 0 评论 -
synchronized和Lock的区别
1.Lock是一个接口,synchronized是一个关键字。 2.异常是否释放锁: synchronized在发生异常时会自动释放占有的锁,所以不会出现死锁。 Lock发生异常时,不会主动释放占有的锁,必须手动unlock,可能出现死锁。(所以最好将同步代码块用try catch包起来,在finally中调用unlock释放锁) 3.是否响应中断: Lock等待锁的过程中可以用 interrupt 来中断等待。 synchronized只能等待锁的释放,不能响应中断。 ...原创 2020-09-26 18:18:11 · 128 阅读 · 0 评论