-
Java并发编程的10个注意事项
SimpleDateFormat线程不安全,双重检查锁的漏洞,volatile不保证原子性,死锁,没释放锁,HashMap导致内存溢出,使用默认线程池,@Async注解的陷阱,自旋锁浪费CPU资源,ThreadLocal用完没清空导致内存泄漏
-
CountDownLatch、Semaphore的实现原理AQS
AQS(AbstractQueuedSynchronizer) 抽象队列同步器,CountDownLatch,ReentrantLock、Semaphore 等功能实现都使用了它
-
ThreadLocal使用与内存泄漏
threadLocal线程局部变量为我们解决了多线程访问变量的安全问题,key是弱引用,只能生存到下次GC前,如果很多线程使用Threadlocal可能会引起内存泄露,不同的请求获取相同的ThreadLocal值如何解决,InheritableThreadLocal可继承线程变量在线程池中执行被获取相同值的原因,因为线程变量没有被重新set值
-
马士兵讲线程与锁笔记
马士兵讲线程与锁笔记
-
飞天班第5节:JUC并发编程(3)
常用辅助类CountDownLat+CyclicBarrier+Semaphore,JMM内存模型,Volatile的保证可见性、不保证原子性、禁止指令重排(内存屏障),原子类解决volatile的不保证原子性,单例模式(饿汉式、DCL懒汉式),实战反射破坏单例,enum枚举为什么是单例安全的,CAS 比较替换,原子引用的ABA问题解决(版本号),自旋锁,死锁排查,多线程面试题总结
-
飞天班第4节:JUC并发编程(2)
读写锁、阻塞队列的四组API、同步队列、线程池的Excutors三大方法,七大参数,4种拒绝策略,最大线程池数如何设定,核心4个函数式接口,stream流式计算,任务分支合并forkjoin与普通计算、并行流计算的比较,异步回调runSync与supplySync
-
飞天班第3节:JUC并发编程(1)
什么是JUC,wait和sleep的区别,并发Synchronized 和 Lock锁的区别,生产者和消费者线程间通信唤醒旧方案wait和notify,新方案ReentrantLock和Condition接口精准唤醒控制,使用线程安全的集合类CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap,hashmap的值覆盖问题和底层数据结构