锁
zyc920716
这个作者很懒,什么都没留下…
展开
-
死锁分析
死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。发生死锁需要满足4个条件: 1. 互斥条件:一个资源每次只能被一个进程使用。 2. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 3. 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 4. 循环等待条件:若干进程之间形成一种头尾相接原创 2017-09-28 14:28:13 · 356 阅读 · 0 评论 -
深入源码剖析Thread.join实现
java.lang.Thread类提供一个静态方法join可以阻塞主线程(调用join方法的线程),直到当前线程执行完。用法如下: join会保证t2在t1线程执行完退出之后再执行,程序执行结果总是如下 定义实现该方法掉用了join(0)方法, 我们跟进查看具体实现。注意这里是一个静态方法加了同步锁,锁的是this,也就是当前类实例。我们知道在线程获取了锁以后再执行wait方法,会让线程释放掉锁原创 2017-10-27 23:21:44 · 557 阅读 · 2 评论 -
控制三个线程交替打印ABC
package me.zyc.thread.test;import java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject;import java.util.concurrent.locks.ReentrantLock;public class LoopRunByOrder { private s原创 2018-01-10 17:38:59 · 447 阅读 · 0 评论 -
JDK源码走读之ReentrantLock
ReentrantLock的功能几乎等同于Synchronized,在分析源码之前,我们首先来明确一下ReentrantLock要实现的功能,这样才能做到有的放矢。控制线程执行顺序。当线程获取锁进入Synchronized代码块(获取监视器),其余线程必须等待该线程执行完毕,才能继续执行该代码块。提供线程通信功能。Synchronized关键字支持在其代码块中使用await、notify、原创 2017-11-11 17:30:26 · 379 阅读 · 0 评论