JUC
文章平均质量分 91
多线程、高并发
scl、
回首往昔 更进一步 ---工作1年的快乐风男♂
展开
-
Java并发编程学习篇8_基于开源的配置中心的轻量动态线程池dynamic-tp实践与源码原理分析
动态线程池实践与原理分析原创 2022-06-30 11:32:25 · 3181 阅读 · 3 评论 -
《Java并发编程的艺术》读书笔记
一、总结二、内容1、并发编程的挑战上下文切换即使是单核处理器也支持多线程处理代码,因为cpu会给每个线程分配时间片,不停的切换线程,让我们感觉线程是在同时执行的在线程切换的前,需要保留上一个线程任务的状态,以便下一次重新切换回这个任务,所以任务从保存到在加载的过程就是依次上下文切换如何避免上下文切换无锁编程:多线程竞争锁的时候,会上下文切换,因此可以使用采用避免锁的方法进行多线程处理数据,如将数据的ID经过hash之后分段,不同的线程处理不同分段的数据CAS算法:非阻塞自旋Compar原创 2021-11-23 22:12:41 · 3966 阅读 · 0 评论 -
《Java多线程编程核心技术第二版》读书笔记
一、总结这本书写的很浅,更多的是案例,ThreadLocal部分还可以,原理基本讲到了大致总结了下面部分知识点二、内容在什么情况下使用多线程?阻塞依赖,如业务分为两个执行过程,当A业务阻塞的时候,B业务的执行不依赖A业务的执行结果start()方法耗时的原因是因为执行了多个步骤通过JVM告诉操作系统创建Thread通过系统开辟内存并使用WindowsSDK中的createThread()函数创建Thread对象操作系统对Thread对象进行调度,以确定执行时机Thread在操作系原创 2021-11-19 22:26:37 · 620 阅读 · 0 评论 -
Java并发编程学习篇7_各种锁的简单理解
目录公平、非公平锁可重入锁自旋锁死锁一、公平锁、非公平锁概念公平锁:非常公平,线程之间不可以插队非公平锁:非常不公平,线程之间可以插队(默认)查看 //无参构造: 默认非公平锁 /** * Creates an instance of {@code ReentrantLock}. * This is equivalent to using {@code ReentrantLock(false)}. */ public ReentrantL原创 2021-07-14 20:30:02 · 357 阅读 · 1 评论 -
Java并发编学习篇6_单例模式、理解CAS、原子引用解决ABA问题
目录单例模式理解CAS原子引用解决ABA问题一、单例模式什么是单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一原创 2021-07-14 16:59:35 · 591 阅读 · 2 评论 -
Java并发编程学习篇5_Volatile关键字
目录JMM的8种操作使用volatile解决不可见性使用原子类、volatile解决原子性使用volatile禁止指令重排一、Volatile关键字概念Volatile 是 JVM 提供的轻量级的同步机制保证可见性不保证原子性禁止指令重排JMM:Java内存模型,是一个概念、约定有线程解锁前,必须把 共享变量 立刻 刷新为主存(每个线程都有自己一块内存称为 工作内存,操作的变量是自己内存块的变量,但是实际存在的位置是主存,因此每次操作完之后需要 更新 主存)线程加锁原创 2021-07-13 19:34:40 · 413 阅读 · 2 评论 -
Java并发编程学习篇4_四大函数式接口、Stream流式计算、ForkJoin分支合并、Future异步回调
目录四大函数式接口Function函数式接口-有参、有返回值Predicate断定型接口-有参、返回布尔值Consumer消费者接口-有参、无返回值Supplier生产者接口-无参、有返回值Stream流式计算ForkJoin分支合并Future异步回调一、四大函数式接口概述简化编码技术: Lambda表达式、链式编程、函数式接口、Stream流式计算。只要是函数式接口,就可以使用Lambda表达式简化函数式接口:只有一个方法的接口,如 Runnable接口原创 2021-07-13 17:18:09 · 460 阅读 · 1 评论 -
Java并发编程学习篇3_读写锁ReadWriteLock、阻塞队列BlockingQueue、同步队列SynchronousQueue、线程池(三大方法、七大参数、四种拒绝策略、原生方式创建线程池)
目录读写锁WriteReadLock阻塞队列BlockingQueue同步队列SynchronousQueue线程池一、读写锁ReadWriteLock概念ReadWriteLock是接口被 ReentrantReadWriteLock 类实现: public class ReentrantReadWriteLock extends Object implements ReadWriteLock, SerializableReadWriteLock维护一对关联的locks ,一个用原创 2021-07-12 19:25:39 · 602 阅读 · 0 评论 -
Java并发编程学习篇2_List、Set、Map集合线程安全、ConcurrentHashMap原理、Callable相关的FutureTask类、三大辅助工具类
目录 List集合线程安全CopyOnWriteArrayListSet、Map集合线程安全CopyOnWriteArraySetConcurrentHashMap多线程第三种实现Callable接口的创建方式FutureTask类三大辅助工具类CountDownLatchCyclicBarrierSemaphore 一、List集合线程安全概述线程安全集合:多线程并发的基础上修改一个集合,不会发生 ConcurrentModificationE原创 2021-07-11 18:11:51 · 645 阅读 · 0 评论 -
Java并发编程学习篇1_JUC概述、虚假唤醒问题、JUC的生产者和消费者关系、8锁问题(对象锁、类锁区别)
目录回顾一、回顾概念并发编程主要涉及的三个类java.util.concurrent、 java.util.concurrent.automic、 java.util.concurrent.locks注意java实际上是开启不了线程的,而是调用本地方法,底层是c++开启线程,java是运行在虚拟机上的,无法直接操作硬件线程的几个状态new 新生runnable 运行blocked 阻塞waiting 等待timed_witing 超时等待terminated 终止wa原创 2021-07-10 23:37:12 · 794 阅读 · 1 评论 -
Java多线程基础篇1_往期基础补充总结
目录往期Java阶段多线程相关,参考往期博客:Java学习篇21_异常、线程、Java学习篇22_线程、同步、Java学习篇23_线程池、Lambda表达式补充一、补充1.程序、进程、线程之间的区别程序:指令和数据的有序集合,其本身没有任何运行的含义,静态概念进程:程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位。线程:一个进程至少包含一个线程,否则无存在的意义。CPU调度和执行的单位,也就是cpu时间片是根据所有总线程数来分的,一个进程线程越多,所占的cpu处理时间就相对越原创 2021-07-08 20:14:24 · 627 阅读 · 2 评论