JUC
文章平均质量分 87
学而知不足~
这个作者很懒,什么都没留下…
展开
-
JUC第八课——ThreadPoolExecutor,ThreadPoolExecutor源码,ForkJionPool
线程池实现 Executors:线程池的工厂 JDK给我们提供的默认的线程池,阿里不建议使用自带的线程池,因为线程有个上界,可能导致越界 ThreadPoolExecutor:我们通常所说的线程池。多个线程共享同一个任务队列。 SingleThreadPool CachedPool FixedThreadPool ScheduledPool ForkJoinPool:先将任务分解,最后再汇总。每个线程有自己的任务队列。 WorkStealingPool SingleThreadPool Single原创 2022-01-06 11:43:18 · 305 阅读 · 0 评论 -
JUC第七课——复习、线程池
面试题 要求用线程顺序打印A1B2C3…Z26 LockSupport package character07; import java.util.concurrent.locks.LockSupport; /** * @author laimouren */ public class T08_00_LockSupport { static Thread t1 = null,t2=null; public static void main(String[] args) throw原创 2022-01-05 11:27:32 · 108 阅读 · 0 评论 -
JUC第六课——容器
并发容器 物理结构:只分数组和链表 逻辑结构:如下 Deque:双端队列 HashTable、HashMap、SynchronizedHashMap、ConcurrentHashMap Vector和HashTable:自带锁,现在基本不用 从HashTable发展到HashMap、SynchronizedHashMap、ConcurrentHashMap 测试HashTable package character06; /** * @author laimouren */ public class原创 2021-10-21 01:00:26 · 156 阅读 · 0 评论 -
JUC第五课——AQS源码解析、ThreadLocal、四种引用
AQS源码解析 AQS:AbstractQueuedSynchronizer 以CAS为核心,替代了传统的synchronized 了解一下VarHandle: 可以简单理解为类似于指针,指向一个对象,普通属性也可以进行原子操作 JDK9之前没有,直接操作二进制码,比反射快多了 ThreadLocal ...原创 2021-10-17 23:20:18 · 78 阅读 · 0 评论 -
JUC第四课——LockSupport、三道面试题、源码阅读原则
LockSupport 基本操作 package character04; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.LockSupport; /** * @author laimouren */ public class LockSupport01 { public static void main(String[] args) { Thread t = new Threa原创 2021-10-16 01:09:13 · 79 阅读 · 0 评论 -
JUC第三课——复习、ReentrantLock、CountDownLatch、CyclicBarrier、Phaser、ReadWriteLock、Semaphore、Exchanger
CAS复习 类似乐观锁,是使用CPU的原语实现 cas(期望值,更新值) 例子: m = 0; m++; cas(0,1){ for(;;)如果当前值==0 则m=1 } AtomicXX类 package character02; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; /** * 解决同样问题的更高效的方法,使用AtomXX类 * At原创 2021-10-15 00:34:15 · 134 阅读 · 0 评论 -
JUC第二课——volatile关键字、锁优化和CAS
volatile关键字 意思是可变的 作用: 保证线程可见性(每次写都会被线程读到) MESI 缓存一致性协议 禁止指令重排序(CPU) DCL单例 Double Check Lock 补充:单例模式加载类对象 饿汉式 package singleton; /** * 饿汉式 * 类加载到内存后,就实例化一个实例,JVM保证线程安全 * 简单实用,推荐使用 * 唯一缺点:不管用不用到,类装载的过程就完成了实例化 * Class.forName("") * @author lai原创 2021-10-12 21:15:07 · 93 阅读 · 0 评论 -
JUC第一课——线程以及Synchronized关键字
线程 基本概念 进程,线程,纤程 创建线程的方法: 继承Thread类,重写run()方法:class MyThread extends Thread{}; 创建实例:new MyThread().start(); 实现Runable接口,重写run()方法:MyRun implements Runable{} 创建实例:new Thread(new MyRun()).start(); 使用Lambda表达式: 创建实例:new Thread( ()->{System.out.printl原创 2021-10-12 16:52:06 · 58 阅读 · 0 评论