- 博客(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
322
原创 JUC学习,ThreadPoolExecutor线程池
线程池的作用的:在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 第三:提高线程的可管理性。常用线程池:ExecutorService 是主要的实现类,其中常用的有 :Executors.newSingleThreadExecutor() newFixedThreadPool() newCac
2021-01-17 10:49:20
122
原创 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
118
原创 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
166
原创 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
97
原创 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
1755
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人