![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
waS_TransvolnoS
写过两行bug,尘世间一个迷途小码农。
展开
-
多线程面试题——交替打印1和2
public class Multi { public static void main(String[] args) throws Exception { final Object obj = new Object(); Thread t1 = new Thread(new Runnable() { @Override ...转载 2019-09-18 22:32:02 · 217 阅读 · 0 评论 -
使用synchronized实现死锁
死锁简介 死锁定义 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 死锁产生条件 互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕...转载 2019-09-18 22:38:53 · 216 阅读 · 0 评论 -
synchronized与Lock的区别
两者区别: 1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类; 2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁; 3.synchronized会自动释放锁(a线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死...转载 2019-09-22 14:15:57 · 138 阅读 · 0 评论