Thread
zclworld
这个作者很懒,什么都没留下…
展开
-
使用Synchronized 模拟死锁产生的示例
使用synchronized可以为资源加锁,保证共享资源访问的同步安全问题。不恰当的使用将会导致死锁问题。public class DeadLockTest { public static String lock1 = "lock1"; public static String lock2 = "lock2"; public static void main(String[...原创 2018-03-30 17:07:37 · 710 阅读 · 2 评论 -
Java 线程 模拟火车站售票
public class TicketSaleTest{ public static void main(String[] args) throws Exception { Station st = new Station(); Person p1 = new Person(st); Person p2 = new Person(st); Person p3 = new...原创 2018-03-31 13:28:44 · 1414 阅读 · 1 评论 -
两种方式的交替打印 基于Synchronized 与 ReentrantLock
public class PrintABCTest { public static void main(String[] args) { PrintABC printABC = new PrintABC(); new Thread(()->{ for(int i = 1;i<11;i++){ printABC.printA(i); } } , "A...原创 2018-03-28 18:19:59 · 533 阅读 · 0 评论 -
多线程之 ReentrantLock 的公平锁与非公平锁
ReentrantLock 重入锁的意思。重入的意思是任意线程再获取到锁后能够再次获取该锁而不会被锁阻塞。ReentrantLock 包含公平锁和非公平锁。ReetrantLock 的构造函数中根据boolean值的不同 FairSync 公平同步器与非公平同步器上图中的公平同步器中获取锁时有个 hasQueuedPredecessors() 方法,这是唯一 一处与非公平同步器的地方,判断当前当...原创 2018-04-05 16:03:31 · 314 阅读 · 0 评论 -
多线程 之Semaphore 信号量控制
Semaphore(信号量) 用来控制同时访问特定资源的线程数量。可以起到限流的作用。它与之前写到的Guava API 中的令牌桶 RateLimiter的区别在于,令牌桶是控制了最终能进入访问资源的恒定流量。会抛弃掉一些过剩流量的进入。而Semaphore 保证的是进入流量的恒定速率,这些流量最终都可以进入访问资源,只是已一定的速率。public class SemaphoreTest2 {...原创 2018-04-05 16:03:16 · 382 阅读 · 0 评论 -
多线程之CountDownLatch & CyclicBarrier
CountDownLatch 俗称闭锁 构造函数中可以传递一个count 非负的整数值的数字,表示计数值,当这个计数值减到为0时,才能继续执行,比如说计算几个线程执行消耗时间 。CyclicBarrier 俗称同步屏障,它的构造函数有两种,其他一个也是传递一个非负的整数值,表示几个线程需要达到屏障处,另一个构造函数除了那个非零的整数值,还可以传递一个Runnable接口的参数,可以在都达到屏障处后...原创 2018-04-06 15:07:15 · 152 阅读 · 0 评论