随笔分类 -  多线程

摘要:ThreadLocal夺命11连问 阅读全文
posted @ 2022-08-12 14:32 姚春辉 阅读(44) 评论(0) 推荐(0)
摘要:前言 我们异步执行一个任务时,一般是用线程池Executor去创建。如果不需要有返回值, 任务实现Runnable接口;如果需要有返回值,任务实现Callable接口,调用Executor的submit方法,再使用Future获取即可。如果多个线程存在依赖组合的话,我们怎么处理呢?可使用同步组件Co 阅读全文
posted @ 2022-03-30 15:23 姚春辉 阅读(928) 评论(0) 推荐(0)
摘要:异步计算 所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。 JDK5新增了Future接口,用于描述一个异步计算的结果。虽 阅读全文
posted @ 2021-11-12 17:38 姚春辉 阅读(222) 评论(0) 推荐(0)
摘要:1.Future 在执行多个任务的时候,使用Java标准库提供的线程池是非常方便的。我们提交的任务只需要实现Runnable接口,就可以让线程池去执行: class Task implements Runnable { public String result; public void run() 阅读全文
posted @ 2021-11-12 10:29 姚春辉 阅读(3218) 评论(0) 推荐(0)
摘要:线程间通信的几种实现方式 首先,要线程间通信的模型有两种:共享内存和消息传递,以下方式都是基本这两种模型来实现的。我们来基本一道面试常见的题目来分析:题目:有两个线程A、B,A线程向一个集合里面依次添加元素"abc"字符串,一共添加十次,当添加到第五次的时候,希望B线程能够收到A线程的通知,然后B线 阅读全文
posted @ 2021-11-11 14:20 姚春辉 阅读(931) 评论(0) 推荐(0)
摘要:这篇文章讨论了Java应用中并行处理的多种方法。从自己管理Java线程,到各种更好几的解决方法,Executor服务、ForkJoin 框架以及计算中的Actor模型。 Java并发编程的4种风格:Threads,Executors,ForkJoin和Actors 我们生活在一个事情并行发生的世界。 阅读全文
posted @ 2021-11-09 20:19 姚春辉 阅读(304) 评论(0) 推荐(0)
摘要:本章对Actors并发框架进行初步的介绍和入门示例的演示,关于其更深层次的内容,以后会系统性的进行学习。 1.Actors并发模型简介 Actors并发模型是计算机科学领域中的一个并行计算模型,它把actors当做通用的并行计算原语。 一个actor对接收到的消息做出响应,进行本地决策,可以创建更多 阅读全文
posted @ 2021-10-23 15:48 姚春辉 阅读(1882) 评论(0) 推荐(0)
摘要:本章主要对ForkJoin并发框架进行学习,主要内容分为三个部分: ForkJoin并发框架的浅谈 ForkJoin并发编程的两个实例 ForkJoinPool线程池的常用方法说明 1.ForkJoin并发框架的浅谈 1.1.Fork和Join ForkJoin并发框架:Fork=分解 + Join 阅读全文
posted @ 2021-10-23 15:40 姚春辉 阅读(454) 评论(1) 推荐(0)
摘要:原文地址:https://blog.csdn.net/YJian2008/article/details/16951811 TransferQueue TransferQueue是一个继承了BlockingQueue的接口,并且增加若干新的方法。LinkedTransferQueue是Transfe 阅读全文
posted @ 2021-10-23 15:38 姚春辉 阅读(149) 评论(0) 推荐(0)
摘要:原文地址:https://blog.csdn.net/Dax1n/article/details/69813682 介绍 Java 6的并发编程包中的SynchronousQueue是一个没有数据缓冲的BlockingQueue(队列只能存储一个元素)。 生产者线程对其的插入操作put必须等待消费者 阅读全文
posted @ 2021-10-23 15:29 姚春辉 阅读(150) 评论(0) 推荐(0)
摘要:原文地址:http://cmsblogs.com/?p=2413 DelayQueue是一个支持延时获取元素的无界阻塞队列。 里面的元素全部都是“可延期”的元素,列头的元素是最先“到期”的元素。 如果队列里面没有元素到期,是不能从列头获取元素的,哪怕有元素也不行。 也就是说只有在延迟期到时才能够从队 阅读全文
posted @ 2021-10-23 15:26 姚春辉 阅读(124) 评论(0) 推荐(0)
摘要:原文地址:http://www.importnew.com/25541.html 一、 前言 PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高的元素,是二叉树最小堆的实现,研究过数组方式存放最小堆节点的都知道,直接遍历队列元素是无序的。 二、 Priori 阅读全文
posted @ 2021-10-23 14:53 姚春辉 阅读(125) 评论(0) 推荐(0)
摘要:原文地址:http://www.importnew.com/25566.html 一、 前言 上节介绍了无界链表方式的阻塞队列LinkedBlockingQueue,本节来研究下有界使用数组方式实现的阻塞队列ArrayBlockingQueue 二、 ArrayBlockingQueue类图结构 如 阅读全文
posted @ 2021-10-23 14:50 姚春辉 阅读(99) 评论(0) 推荐(0)
摘要:原文地址:http://ifeve.com/concurrent-collections-3/ 关于与LinkedBlockingDeque类似的单向队列LinkedBlockingQueue可以参考:Java并发49 使用阻塞线程安全的列表 列表(list)是最基本的集合。 一个列表中的元素数量是 阅读全文
posted @ 2021-10-23 14:20 姚春辉 阅读(116) 评论(0) 推荐(0)
摘要:原文地址:http://www.importnew.com/25583.html 一、前言 前面介绍了使用CAS实现的非阻塞队列ConcurrentLinkedQueue,下面就来介绍下使用独占锁实现的阻塞队列LinkedBlockingQueue的实现。 二、 LinkedBlockingQueu 阅读全文
posted @ 2021-10-23 14:13 姚春辉 阅读(97) 评论(0) 推荐(0)
摘要:原文地址:https://www.jianshu.com/p/602b3240afaf ConcurrentLinkedDeque 是双向链表结构的无界并发队列,从JDK 7开始加入到J.U.C的行列中,使用CAS实现并发安全。 与 ConcurrentLinkedQueue 的区别是该阻塞队列同时 阅读全文
posted @ 2021-10-23 11:27 姚春辉 阅读(213) 评论(0) 推荐(0)
摘要:一、 前言 常用的并发队列有阻塞队列和非阻塞队列。 前者使用锁实现,后者则使用CAS非阻塞算法实现,使用非阻塞队列一般性能比较好。 下面就看看常用的非阻塞ConcurrentLinkedQueue是如何使用CAS实现的。 二、 ConcurrentLinkedQueue类图结构 如图Concurre 阅读全文
posted @ 2021-10-22 10:38 姚春辉 阅读(175) 评论(0) 推荐(0)
摘要:ConCurrentHashMap 1.8 相比 1.7的话,主要改变为: 去除 Segment + HashEntry + Unsafe 的实现,改为 Synchronized + CAS + Node + Unsafe 的实现其实 Node 和 HashEntry 的内容一样,但是HashEnt 阅读全文
posted @ 2021-10-21 20:27 姚春辉 阅读(5880) 评论(0) 推荐(0)
摘要:原文地址:http://ifeve.com/concurrenthashmap/ 术语定义 术语英文解释 哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表 hash table 根据设定的哈希函数H(key)和处理冲突方法将一组 阅读全文
posted @ 2021-10-20 19:59 姚春辉 阅读(115) 评论(0) 推荐(0)
摘要:原文地址:http://www.cnblogs.com/skywang12345/p/3498634.html跳表相关:http://kenby.iteye.com/blog/1187303 概要 本章对Java.util.concurrent包中的ConcurrentSkipListSet类进行详 阅读全文
posted @ 2021-10-20 10:14 姚春辉 阅读(257) 评论(0) 推荐(0)