多线程
文章平均质量分 94
打分几楼MOTO
这个作者很懒,什么都没留下…
展开
-
AQS常用组件
变成阻塞(因为permit为零了会阻塞在这里,一直到permit变为1),这时调用unpark会把permit置为1。LockSupport是用来创建锁和其他同步类的基本线程阻塞原语.LockSupport中的park(()和unpark()的作用分别是阻塞线程和解除阻塞线程。 允许一个线程或者多个线程等待直到在其他线程中执行的一组操作完成的同步操作.里面Await方法等待计数器归零然后再向下执行(先让必须要完成的任务先执行)纯粹的是只想阻塞线程,并不想加锁。原创 2022-08-21 13:19:06 · 368 阅读 · 0 评论 -
CAS介绍及魔法类Unsafe
目录JUC 并发包中原子类 java.util.concurrent.atomic根据操作的目标数据类型,可以将 JUC 包中的原子类分为 4 类:1. 基本原子类2. 数组原子类3. 引用原子类4. 字段更新原子类5.原子操作增强类深度剖析 案例longAdder的原理Striped64的重要成员属性以及方法Cell 源码分析图形化总结 总结 Unsafe类Unsafe 提供的 CAS 方法获取属性偏移量 根据属性的偏移量获取属性的最新值CASCAS是什么CAS底层原理自旋锁实现自旋锁整原创 2022-06-05 13:35:33 · 554 阅读 · 0 评论 -
CompletableFuture介绍
CompletionStage代表异步计算过程中的某一个阶段,一个阶段完成以后可能会触发另外一个阶段一个阶段的计算执行可以是一个Function,Consumer或者Runnable.比如一个阶段的执行可能是单个阶段的完成触发,也可能是多个阶段一起触发代表异步计算过程中的某一个阶段,一个阶段完成可能会触发另外一个阶段,exceptionally相当于try/catchwhenComplete+handle相当于try/finally。...原创 2022-06-04 17:33:53 · 319 阅读 · 0 评论 -
阻塞队列案例及部分源码
目录ArrayBlockingQueueArrayBlockingQueue的部分源码LinkedBlockingQueueLinkedBlockingDeque的部分源码使用实例PriorityBlockingQueuePriorityBlockingQueue的部分源码使用实例DelayQueueDelayQueue的源码使用实例点击这里可以查看理论部分注意:BlockingQueue 不接受null 元素。试图add、put 或...原创 2022-05-19 17:11:28 · 253 阅读 · 0 评论 -
监控线程池中的线程并且捕获出现异常的线程
目录监控线程池的运行状态代码实例1.自定义ThreadPoolExecutor2.自定义Runnable3.启动类4.在执行任务之前为每个线程增加异常拦截器线程池中的一个线程出现异常监控线程池的运行状态需要关注ThreadPoolExecutor中的四个方法Shutdown():启动有序关闭,其中先前提交的任务将被执行,但不会接受任何新任务。 ShutdownNow():尝试停止所有主动执行的任务,停止等待任务的处理,并返回正在等待执行的任务列表。 befor原创 2022-05-18 17:37:11 · 808 阅读 · 0 评论 -
Synchonrized介绍
目录前提知识Synchronized介绍Synchronized使用场景synchronized底层原理Synchronized的可重入的实现机制Monitor监视器锁什么是monitor对象布局Synchronized的8锁现象前提知识多线程编程中,有可能会出现多个线程同时访问同一个共享变量,可变资源的情况,这个资源我们称之为临界资源;这种资源对象可能是:对象,变量,文件等.共享:资源可以由多个线程同时访问 可变:资源可以在其生命周期内被修改引出的问题:原创 2022-02-13 18:04:06 · 587 阅读 · 1 评论 -
定时线程池
目录定时线程池基本介绍ScheduledThreadPoolExecutor介绍ScheduledExecutorService介绍阻塞队列使用的是DelayedWorkQueue()常用的定时任务区别定时线程池基本介绍用来处理延迟任务或者定时任务与ThreadPoolExecutor不同的是里面没有非核心线程概念(ThreadPoolExecutor的有关知识可以点击此链接查看)它接受ScheduledFutureTask类型的任务,是线程调度任务的最小单位,..原创 2022-02-11 00:46:20 · 2459 阅读 · 0 评论 -
多线程及线程池
目录线程线程池(ThreadPool)线程池的7大参数线程池之阻塞队列线程池之拒绝策略(RejectedExecutionHandler )监控线程池的运行状态部分源码分析线程 线程是调度CPU资源的最小单位,线程模型分为KLT模型与ULT模型,JVM使用的KLT模型,Java线程与OS线程保持1:1的映射关系,也就是说有一个java线程在操作系统里面也会有一个对应的线程,Java线程有多种声明状态NEW:新建RUNNABLE:运行BOLCKE....原创 2022-02-10 18:06:30 · 1280 阅读 · 0 评论 -
Volatile和JMM内存模型
目录前提说明 JMM开始JMM有以下规定JMM的8种操作MESI(缓存一致性协议)JMM对这八种指令的使用,制定了如下规则Volatile的可见性实现原理指令重排和内存屏障Volatile内存语义的实现volatile与synchronized的区别总结前提说明 线程在堆中的私有空间 Volatile在AQS中的大量使用 Synchronized的基本原理...原创 2022-02-09 11:37:01 · 580 阅读 · 0 评论 -
ThreadLocal
initialValue()withInitial(Supplier>) 比如某房产中介销售都有自己的销售额指标,自已专属自己的,不和别人掺和 ThreadLocal遇到线程池,如果不及时清理线程,会造成数据混乱 线程池中的线程会不断复用的,ThreadLocal中的副本属于线程相关的,如果被复用的线程去执行新的任务时,会使用上一个线程操纵过的对象,会造成数据混乱 4.ThreadLocal的实现原理4.1...原创 2022-02-08 23:03:33 · 114 阅读 · 0 评论