并发编程
文章平均质量分 84
java之JUC包的解释与实例讲解,和多线程并发场景分析
Volunteer Technology
对java技术以及python比较熟悉,在精进的道路上,毕业至今!
展开
-
面试归纳:并发和JVM
归纳全面的JVM和并发容器的面试精华!!!!!!原创 2021-12-14 22:09:44 · 672 阅读 · 1 评论 -
多线程(六):并发容器类讲解
目录并发工具类并发工具类-Hashtable并发工具类-ConcurrentHashMap基本使用并发工具类-ConcurrentHashMap1.7原理并发工具类-ConcurrentHashMap1.8原理并发工具类-CountDownLatch并发工具类-Semaphore并发工具类并发工具类-HashtableHashtable出现的原因 : 在集合类中HashMap是比较常用的集合对象,但是HashMap是线程不安全的(多线程环境下可能会存在问题)。为了保证原创 2021-06-27 17:39:28 · 303 阅读 · 0 评论 -
多线程(五):volatile与原子性和锁的详解
目录volatile与原子性详解volatile-问题volatile解决synchronized解决原子性volatile关键字不能保证原子性原子性_AtomicIntegerAtomicInteger-内存解析AtomicInteger-源码解析悲观锁和乐观锁volatile与原子性详解volatile-问题代码分析 :/** * @author wangyy * @Date 2021-06-25 */public class De转载 2021-06-25 14:33:51 · 293 阅读 · 0 评论 -
多线程(四):线程池原理与状态
目录线程池线程状态介绍线程的状态-练习1线程的状态-练习2线程的状态-练习3线程池-基本原理线程池-Executors默认线程池线程池-Executors创建指定上限的线程池线程池-ThreadPoolExecutor线程池-参数详解线程池-非默认任务拒绝策略线程池线程状态介绍当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程状态被原创 2021-06-25 11:32:11 · 202 阅读 · 1 评论 -
多线程(三):生产者与消费者
3.1生产者和消费者模式概述【应用】 概述 生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。 所谓生产者消费者问题,实际上主要是包含了两类线程: 一类是生产者线程用于生产数据 一类是消费者线程用于消费数据 为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库 生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为 消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为原创 2021-06-25 11:09:47 · 1417 阅读 · 2 评论 -
多线程(二):线程同步以及死锁
2.1卖票【应用】 案例需求 某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票 实现步骤 定义一个类SellTicket实现Runnable接口,里面定义一个成员变量:private int tickets = 100; 在SellTicket类中重写run()方法实现卖票,代码步骤如下 判断票数大于0,就卖票,并告知是哪个窗口卖的 卖了票之后,总票数要减1 票卖没了转载 2021-06-25 11:01:37 · 213 阅读 · 0 评论 -
多线程(一):创建线程与线程状态
1.实现多线程1.1简单了解多线程【理解】是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。1.2并发和并行【理解】 并行:在同一时刻,有多个指令在多个CPU上同时执行。 并发:在同一时刻,有多个指令在单个CPU上交替执行。 1.3进程和线程【理解】 进程:是正在运行的程序 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位 动态性:进程的实质是程序的转载 2021-06-25 10:36:24 · 140 阅读 · 0 评论 -
ForkJoin框架使用和原理剖析
一:ForkJoin理解默认情况下,并行线程数量等于可用处理器的数量ForkJoinPool与其他类型的ExecutorService的区别主要在于它使用了工作窃取:池中的所有线程都试图查找和执行提交给池的任务和/或其他活动任务创建的任务(如果不存在工作,则最终阻塞等待工作)。二:重写ForkJoinTask//采用park/unpark进行重写import java.util.concurrent.Callable;import java.util.concurrent.Linke原创 2021-03-19 15:04:43 · 396 阅读 · 0 评论 -
生产者与消费者与线程状态
多线程实例代码目录多线程实例代码一:线程运行状态:新建 -> 运行 -> 阻塞 -> 运行 -> 终止二:一般的生产者与消费者模式(三种线程协作通信的方式:suspend/resume、wait/notify、park/unpark */)三:线程池使用的案列四:线程封闭示例一:线程运行状态:新建 -> 运行 -> 阻塞 -> 运行 -> 终止public class Demo2 { public static .原创 2021-03-19 11:45:53 · 196 阅读 · 0 评论 -
InheritableThreadLocal解决threadlocal传递变量问题
即使JDK扩展出了一个子类:InheritableThreadLocal,它能够支持跨线程传递数据,但也仅限于父线程给子线程来传递数据。倘若两个线程间真的八竿子打不着,比如分别位于两个线程池内的线程,它们之间要传递数据该肿么办呢?这就是跨线程池之间的数据传递范畴,是本文将要讲解的主要内容。正文在实际生产中,线程一般不可能孤立的独立去运行,而是交给线程池去调度处理。所以实际上几乎没有纯正的父子线程的关系存在,而若有这种需求大多是线程池与线程池之间的线程联系。InheritableThreadLoc转载 2020-11-27 01:00:31 · 734 阅读 · 0 评论 -
ForkJoinPool 的适用场景,实现原理
ForkJoinPool 不是为了替代 ExecutorService,而是它的补充,在某些应用场景下性能比 ExecutorService 更好。ForkJoinPool 主要用于实现“分而治之”的算法,特别是分治之后递归调用的函数,例如 quick sort 等。ForkJoinPool 最适合的是计算密集型的任务,如果存在 I/O,线程间同步,sleep() 等会造成线程长时间阻塞的情况时,最好配合使用 ManagedBlocker。使用首先介绍的是大家最关心的 Fork/Join Frame转载 2020-11-25 22:52:41 · 1025 阅读 · 0 评论 -
线程基础、线程之间的共享和协作
**基础概念C**PU核心数和线程数的关系核心数:线程数=1:1 ;使用了超线程技术后—> 1:2CPU时间片轮转机制又称RR调度,会导致上下文切换什么是进程和线程进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源线程:CPU调度的最小单位,必须依赖进程而存在。澄清并行和并发并行:同一时刻,可以同时处理事情的能力并发:与单位时间相关,在单位时间内...原创 2020-03-02 23:35:00 · 144 阅读 · 2 评论