Java并发编程
黄山路443号
这个作者很懒,什么都没留下…
展开
-
JUC知识点总结(九)Fork/Join框架解析
16. fork/joinFork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。16.1work-stealing算法工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来执行。对于一个比较大的任务,可以把这个任务分割为若干互不依赖的子任务,为了减少线程间的竞争,把这些子任务...原创 2020-03-26 00:32:05 · 368 阅读 · 0 评论 -
JUC知识点总结(八)线程池面试知识点总结
15. 线程池15.1 为什么要使用线程池?降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度:任务到达时,任务可以不需要等到线程创建就能立即执行提高线程的可管理性15.2 线程池的体系结构:java.util.concurrent.Executor : 负责线程的使用与调度的根接口ExecutorService 子接口: 线程池的主要接...原创 2020-03-25 22:56:15 · 295 阅读 · 0 评论 -
JUC知识点总结(八)CopyOnWrite机制及其在JAVA中的实现
14. CopyOnWrite写时复制, 即在往集合中添加数据的时候,先拷贝一份存储的数组,然后添加元素到这份副本中,然后用副本去替换原先的数组。并发写入的时仍然通过synchronized加锁。14.1 特点:相较于读写锁,写时复制在读取的时候可以写入的 ,这样省去了读写之间的资源竞争;无法保证实时一致性;每次添加都会进行复制,对性能的消耗有点大,适用于读多写少的场合;14.2 ...原创 2020-03-25 19:46:05 · 386 阅读 · 0 评论 -
JUC知识点总结(七)ConcurrentLinkedQueue知识点总结
13. ConcurrentLinkedQueue (循环CAS)应用场景:按照适用的并发强度从低到高排列如下:LinkedList/ArrayList 非线程安全,不能用于并发场景(List的方法支持栈和队列的操作,因此可以用List封装成stack和queue);Collections.synchronizedList 使用wrapper class封装,每个方法都用synchr...原创 2020-03-24 23:06:53 · 613 阅读 · 0 评论 -
JUC知识点总结(六)多线程里的HashMap与ConcurrentHashMap源码分析
12. 多线程中的HashMap12.1 HashMap不安全举例Jdk1.7 头插法,多线程扩容时导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,同时也会出现数据丢失的问题。Jdk1.8 尾插法,多线程put时会造成数据丢失。12.2 HashTable与HashMap的区别HashTable的底层数组初始大小为11,HashMap要求其必须为2...原创 2020-03-24 16:41:41 · 308 阅读 · 0 评论 -
JUC知识点总结(五)生产者消费者模式的三种常见实现方法
11. 生产者\消费者模式Object中的 wait()/notify()要点:判断条件时一定要用while()循环(虚假唤醒)public class Shop{ public int count = 0; public void produce(){ count++; System.out.println(Thread.currentThr...原创 2020-03-23 23:12:17 · 426 阅读 · 0 评论 -
JUC知识点总结(五)线程的生命周期
10.线程的生命周期新建,当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值;就绪,当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待调度运行;运行,如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态;阻塞,在运行状态的...原创 2020-03-21 20:58:04 · 241 阅读 · 0 评论 -
JUC知识点总结(四)五种单例模式的写法
9. 五种单例模式的写法饿汉式:public class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return instance; }}...原创 2020-03-21 17:15:18 · 331 阅读 · 0 评论 -
JUC知识点总结(三)ReentrantLock与ReentrantReadWriteLock源码解析
8. Lock接口 (ReentrantLock 可重入锁)特性ReentantLock 继承接口 Lock 并实现了接口中定义的方法, 它是一种可重入锁, 除了能完成 synchronized 所能完成的所有工作外,还提供了诸如可响应中断锁、可轮询锁请求、定时锁等避免多线程死锁的方法。尝试非阻塞地获取锁:tryLock(),调用方法后立刻返回;能被中断地获取锁:lockInterru...原创 2020-03-21 14:15:25 · 379 阅读 · 0 评论 -
JUC知识点总结(二)Synchronized底层原理总结
7. synchronized关键字(重量级锁)synchronized在JVM中的实现原理:JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的表现细节不同。**本质是对一个对象的监视器(monitor)的获取,而这个获取过程是排他的,也就是同一时刻只能有一个线程获取到有synchronized所保护对象的监视器。**任意一个对象都拥有自己的监视器。任意线程对对象的...原创 2020-03-19 23:31:07 · 308 阅读 · 0 评论 -
JUC知识点总结(一)JMM与volatile关键字
JUC复习笔记(java.util.concurrent)1. 并发的两个关键问题:线程间通信和线程间同步线程通信机制有两种:共享内存:隐式通信,显式同步;消息传递:显式通信,隐式同步。(Java的并发采用的是共享内存模型。)2. JAVA内存模型:JMMJava虚拟机规范试图定义一个Java内存模型(JMM),以屏蔽所有类型的硬件和操作系统内存访问差异,让Java程序在不...原创 2020-03-18 16:57:48 · 346 阅读 · 0 评论