- 博客(6)
- 收藏
- 关注
原创 JUC学习,死锁的产生的条件和排查
java死锁产生的条件: A线程持有锁A的同时,尝试获取锁B。 B线程持有锁B的同时,尝试获取锁A。 测试代码: package com.zhangye; import java.util.concurrent.TimeUnit; class HoldLockThread implements Runnable{ private String lockA; private String lockB; public HoldLockThread(String lockA, Str
2021-01-17 22:15:53
350
原创 JUC学习,ThreadPoolExecutor线程池
线程池的作用的: 在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 第三:提高线程的可管理性。 常用线程池:ExecutorService 是主要的实现类,其中常用的有 : Executors.newSingleThreadExecutor() newFixedThreadPool() newCac
2021-01-17 10:49:20
150
原创 JUC学习,Semaphore(信号量)
package com.zhangye; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; /** * 信号量 * @author zdst010 * */ public class SemaphoreDemo { public static void main(String[] args) { Semaphore semaphore = new Semaphore(3);
2021-01-14 18:46:17
142
原创 JUC学习,CyclicBarrier(程序加法计数器)
package com.zhangye; import java.util.concurrent.CyclicBarrier; public class CyclicBarrierDemo { public static void main(String[] args) { CyclicBarrier cyclicBarrier = new CyclicBarrier(7, ()->{System.out.println("***********召唤神龙");}); for
2021-01-14 17:34:20
192
原创 JUC学习,读写锁ReentrantReadWriteLock
package com.zhangye; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantReadWriteLock; class MyCache{ private volatile Map<String,Object> map = new HashMap<>(); p
2021-01-14 17:14:38
116
原创 JUC学习,CountDownLatch(线程计数器) 线程 和 Enum(枚举)
JUC学习,CountDownLatch(线程计数器) 线程 和 Enum(枚举) package com.zhangye; import java.util.concurrent.CountDownLatch; public class CountDownLatchTest { public static void main(String[] args) throws Exception{ CountDownLatch countdown = new CountDownLatch(6);
2021-01-14 17:03:33
1797
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅