并发编程
文章平均质量分 90
·梅花十三
这个作者很懒,什么都没留下…
展开
-
ThreadLocal 简单理解
▎结构理解每个Thread线程内部都只有一个ThreadLocalMap。 Map里面存储线程本地对象ThreadLocal(key)和线程的变量副本(value)。 Thread内部的Map是由ThreadLocal维护,ThreadLocal负责向map获取和设置线程的变量值 一个Thread可以有多个ThreadLocal▎ThreadLocal场景每个线程需要有自己单独的实例 (也可线程内部构建单独的实例,但ThreadLocal更方便) 实例不被多线程共享,但需在多个方法原创 2022-05-17 09:52:28 · 958 阅读 · 1 评论 -
BlockingQueue阻塞队列获取元素4种处理方案
什么情况下我们会使用阻塞队列:多线程并发处理,线程池!阻塞队列 4种解决方案方式 抛出异常 不抛异常,有返回值 阻塞等待 超时等待 添加 add offer put() offer (Timeout) 移除 remove poll take() poll (Timeout) 检测队首元素 element() peek() / / ▶ 1. 抛出异常/** 抛出异..原创 2022-05-16 17:25:59 · 2653 阅读 · 0 评论 -
CopyOnWriteArrayList了解
前言:CopyOnWriteArrayList是ArrayList的线程安全版本,在写入时会copy一份数据,然后写完再设置成新的数据。适用于读多写少的并发场景▎COWCopyOnWrite 简称COW,写入时复制,是计算机程序设计领域的一种优化策略。核心思想:多个调用者共同去访问一个资源(指向同一个读指针),如果有人试图修改资源的内容,系统会复制一份专用副本给该调用者,去修改这个副本,而对于其他人来说访问的资源还是原来的,不会发生变化。原理:COW的处理过程中需维持一个.原创 2022-05-16 16:44:42 · 198 阅读 · 0 评论 -
面试官:自定义线程池的最大线程数如何配置最好?
一、背景上篇文章通过图文并茂结合生活中的例子的方式,讲解了线程池的原理,其中演示并说明了自定义线程池的7大参数,针对参数之一最大线程创建数该如何定义呢?二、线程和CPU的关系在搞懂线程与CPU的关系前,先思考一个问题:Java真的可以开启线程吗?public synchronized void start() { if (threadStatus != 0) throw new IllegalThreadStateException();...原创 2021-12-29 09:19:12 · 4562 阅读 · 1 评论 -
一文彻底搞懂各个姿势的单例模式
一、什么是单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。说白了就是在内存中,该类只存在一个实体对象!主要解决类的频原创 2021-11-19 12:58:09 · 518 阅读 · 0 评论 -
并发编程—ForkJoin分治思想
一、什么是ForkJoinForkJoin框架包含ForkJoinTask、ForkJoinWorkerThread、ForkJoinPool 和若干ForkJoinTask的子类,核心在于分治和 工作窍取,最大程度利用线程池中的工作线程,避免忙的忙死,饿的饿死。文章重点讲解:ForkJoinPool、ForkJoinTask的使用ForkJoinPoolForkJoinPool 是JDK7引入的线程池,核心思想是将一个大的任务拆分成n个小任务(即fork),然后在将多个小任务处..原创 2021-11-30 18:08:26 · 1313 阅读 · 0 评论 -
击穿线程池面试题:3大方法,7大参数,4种拒绝策略
前言:多线程知识是Java面试中必考的点。本文详细介绍——线程池。在实际开发过程里,很多IT从业者使用率不高,也只是了解个理论知识,和背诵各种八股文,没有深入理解到脑海里,导致面试完就忘。——码农 = 敲代码;程序员= 理解线程池面试必考点:3大方法,7大参数,4种拒绝策略!▶ 介绍一 . 线程池(Thread Pool)程序运行的本质就是:占用系统资源! 资源的竞争就会影响程序的运行,势必要优化资源的利用。例如:池化技术的诞生!常见的有:Java中的对象池、内存池、jdbc连接池、.原创 2021-11-25 09:21:11 · 2429 阅读 · 3 评论 -
BlockingQueue阻塞队列
首先来看扩展关系图:BlockingQueue是一个接口,其底下的实现类有很多,其中ArrayBlockingQueue和LinkedBlockingQueue是重点,故此本文只对这两个队列进行概述。▶BlockingQueue 是什么?一个阻塞队列,是Java util.concurrent包下重要的数据结构,提供了线程安全的队列访问方式。并发包下很多高级同步类的实现都是基于BlockingQueue实现的。▶Blocki...原创 2021-12-29 09:20:17 · 358 阅读 · 0 评论