多线程
青眼酷白龙
这个作者很懒,什么都没留下…
展开
-
Lock和synchronized
1 lock是一个接口,而synchronized是java中的关键字,synchronized是内置的语言实现的。2 synchronized在发送异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生,而lock在发生异常时,如果没有主动通过unlock()去释放锁,则很可能造成死锁现象,因此使用lock时需要在finally块中释放锁。3 Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断。4 通过lo原创 2020-10-13 20:25:55 · 76 阅读 · 0 评论 -
线程通信_生产消费4S店案例
线程通信_生产消费4S店案例经典 生产消费者面试题 (wait、notify 实现)4S店存放生产的汽车生产者线程生产汽车消费者线程购买汽车4S店最多只能存放4台车,如果达到4台车生产者停止生产如果4S店没有库存车,消费需等待有库存后,方可购买import java.util.LinkedList;public class D2_线程通信_生产消费4S店案例 { static final int CAR_STORE_NUM = 4; static int CAR_NUM原创 2020-08-07 15:00:01 · 106 阅读 · 0 评论 -
线程通信_交替打印案例
线程通信_交替打印案例/** * wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。 * 这三个方法最终调用的都是jvm级的native方法。随着jvm运行平台的不同可能有些许差异。 * * todo 如果对象调用了wait方法就会使持有该对象的线程把对象的控制权交出去,然后处于等待状态 * todo 如果对象调用了notify方法就会通知某个正在等待这个对象的控制权的线程可以继续运行 * todo 如果对象调用了notifyA原创 2020-08-07 14:30:01 · 126 阅读 · 0 评论 -
线程6种状态之间的切换图解
原创 2020-04-19 17:27:47 · 263 阅读 · 1 评论 -
手写多线程中的死锁问题
多线程中的死锁在使用多线程时,有这么一种情况:有两个线程:线程A、线程B有两个对象锁:LockA、LockB当线程A想要去执行共享数据时,需要先获取到LockA对象锁,再获取到LockB对象锁后,才可以去操作共享数据。当线程B想要去执行共享数据时,需要先获取到LockB对象锁,再获取到LockA对象锁后,才可以去操作共享数据。场景: 线程A获取到LockA对象锁后,CPU把线程A切...原创 2020-04-19 13:14:44 · 186 阅读 · 0 评论