![](https://img-blog.csdnimg.cn/20210223093110323.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA并发编程
文章平均质量分 94
java的多线程使用
JolyouLu
技术交流群 528668633
展开
-
并发编程-基础(Thread、FutureTask、Join、Interrupt、守护线程)
基础在学习并发编程时,首先需要具备如下几个条件才能让你跟好的阅读该专栏的文章希望你不是一个初学者,对于一些线程安全问题,需要接触过java Web开发、Web服务器、分布式框架时才会遇到,所以需要具备一定实际开发经验才能更好的理解到文章中的例子完成javaSE中的所有知识点学习,了解如何搭建maven项目了解jdk8的新特性,最好对函数式编程和lambda有一定了解对slf4j有所了解,文章中的日志打印都使用slf4j对lombok插件有所了解,文章中使用Lombok简化java bean编原创 2022-04-05 21:12:20 · 639 阅读 · 0 评论 -
并发编程-进阶[锁篇](Monitor、锁原理、锁膨胀、偏向锁、线程活跃性、wait/notify、parl/unpark、ReentrantLock)
并发编程-进阶共享带来的问题在开发中通常需要操作共享变量,如下案例则是一个加法计算,构建了2个线程同时操作sum对其进行+1,根据逻辑那么2个线程最终结果应该是2000,多次执行下可以发现有时结果并不符合预期,这是就是共享带来的问题问题分析在sum+=1并不是一个原子性操作,可以先简单理解为不是一次性操作(如:sum=1、sum=2、sum=3这些就是一次性操作)sum+=1在实际执行时是3个步骤将sum读取到寄存器中寄存器+1将结果写回内存sum中所以在多线程情况下对共享数据原创 2022-04-10 19:49:37 · 694 阅读 · 0 评论 -
并发编程-进阶[volatile篇](java内存模型、Volatile、可见性、有序性、happens-before)
并发编程-进阶[volatile篇]CPU如何工作在了解锁之前我们先需要知道CPU是如何工作的,为什么我们使用多线程时会出现不同步的问题CPU是如何工作的,CPU到我们的硬盘粗略讲是需要经过 一级二级三级缓存=>内存=>硬盘,为什么CPU不能直接对硬盘IO操作呢,首先我们先了解一下CPU,缓存,内存,硬盘运算速度CPU的运算速度一般是GHz,GHz=1000MHz,像2.0,就表示CPU的运算速度是2000000000次/秒(速度极快)缓存是才CPU内部的相当于一条流水线,C原创 2020-02-03 19:40:35 · 509 阅读 · 0 评论 -
并发编程-进阶[无锁并发篇](CAS算法、原子整型、原子引用、原子数组、字段更新器、字段累加器、Unsafe)
测试测试原子引用特别提示AtomicReferenceFieldUpdaterCAS操作原创 2020-02-16 16:12:06 · 399 阅读 · 0 评论 -
并发编程-高级[线程池篇](线程池、生命周期、拒绝策略、任务调度、forkjoin)
newThread线程不是越多越好,如我们普通线程执行创建了1万个线程去add,但是还是比线程池要慢很多,其中原因在于,我们那1万个线程开启后,创建1万个对象,并且还要等待CUP调度,栈满后java每一次CG都要暂停所有线程,而且我们需要等待每一个线程join()完成后才会结束,一个线程join()另外在跑的线程都要挂起等待这个线程join()完成才能继续导致newThread性能低下Executor线程池他重用存在的线程,减少对象创建、消亡的开销,提升性能。...原创 2020-02-01 21:53:13 · 433 阅读 · 0 评论 -
并发编程-多线程设计模式(两阶段终止、保护性暂停、生产与消费、固定顺序)
两阶段终止模式,是一种常见的线程多线程设计模式,该设计模式可让在一个线程t1中如何优雅的终止t2线程。原创 2021-02-23 09:36:53 · 188 阅读 · 1 评论