随笔分类 - Java并发
摘要:为了方便记忆,将锁做如下的分类 一、对象锁 包括方法锁(默认锁对象为this,当前实例对象)和同步代码块锁(自己指定锁对象) 1.代码块形式:手动指定锁定对象,也可是是this,也可以是自定义的锁 public class SynchronizedObjectLock implements Runn
阅读全文
摘要:前言 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用。 本文详细解读一下volatile关键字如何保证变量在多线程之间的可见性,在此之前,有必要讲解一下CPU缓存的相关知识,
阅读全文
摘要:二、ObjectMonitor 结构 前面讲到 java.lang.Object 类定义了 wait(),notify(),notifyAll() 方法。 这些都是 native方法,底层是C++来实现的。 这些方法的具体实现,依赖一个叫做ObjectMonitor模式实现,这是JVM内部C++实现
阅读全文
摘要:实现原理 synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性 Java中每一个对象都可以作为锁,这是synchronized实现同步的基础: 普通同步方法,锁是当前实例对象 静态同步方法,锁是当前类的class对象 同步
阅读全文
摘要:1.并发编程领域的关键问题 1.1 线程之间的通信 线程的通信是指线程之间以何种机制来交换信息。在编程中,线程之间的通信机制有两种,共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信,典型的共享内存通信方式就是通过共享对象进行通
阅读全文
摘要:https://blog.csdn.net/luluyo/article/details/92403240 https://blog.csdn.net/luluyo/article/details/95517610 https://blog.csdn.net/anhenzhufeng/article
阅读全文
摘要:使用解析: https://cloud.tencent.com/developer/article/1038499 公平锁与非公平锁的区别: https://blog.csdn.net/m47838704/article/details/80013056
阅读全文
摘要:concurrent包是基于AQS (AbstractQueuedSynchronizer)框架的,AQS框架借助于两个类: Unsafe(提供CAS操作) LockSupport(提供park/unpark操作) 因此,LockSupport非常重要。 两个重点 (1)操作对象 归根结底,Lock
阅读全文
摘要:Node节点状态源码解析:https://www.cnblogs.com/fsmly/p/11274572.html 流程解析:https://www.cnblogs.com/waterystone/p/4920797.html condition源码解析:https://www.jianshu.c
阅读全文
摘要:ForkJoin框架之ForkJoinTask java 阅读约 62 分钟 前言 在前面的文章"CompletableFuture和响应式编程"中提到了ForkJoinTask和ForkJoinPool,后者毫无疑问是一个线程池,前者则是一个类似FutureTask经典定义的概念. 官方有一个非常
阅读全文
摘要:本文的主要目的是介绍 ForkJoinPool 的适用场景,实现原理,以及示例代码。 说在前面可以说是说明,也可以说下面是结论: ForkJoinPool 不是为了替代 ExecutorService,而是它的补充,在某些应用场景下性能比 ExecutorService 更好。ForkJoinPoo
阅读全文
摘要:类图如下: Executors创建线程池的方式 根据返回的对象类型创建线程池可以分为三类: 创建返回ThreadPoolExecutor对象 创建返回ScheduleThreadPoolExecutor对象 创建返回ForkJoinPool对象 本文只讨论创建返回ThreadPoolExecutor
阅读全文
摘要:一、线程池简介 线程池的使用主要是解决两个问题:①当执行大量异步任务的时候线程池能够提供更好的性能,在不使用线程池时候,每当需要执行异步任务的时候直接new一个线程来运行的话,线程的创建和销毁都是需要开销的。而线程池中的线程是可复用的,不需要每次执行异步任务的时候重新创建和销毁线程;②线程池提供一种
阅读全文
摘要:1、线程池的使用场景 等待返回任务的结果的多步骤的处理场景, 批量并发执行任务,总耗时是单个步骤耗时最长的那个,提供整体的执行效率, 最终一致性,异步执行任务,无需等待,快速返回 2、线程池的关键参数说明 一般情况下我们是通过ThreadPoolExecutor来构造我们的线程池对象的。 * 阿里巴
阅读全文
摘要:异步与多线程的区别 一、异步和多线程有什么区别?其实,异步是目的,而多 线程是实现这个目的的方法。异步是说,A发起一个操作后(一般都是比较耗时的操作,如果不耗时的操作 就没有必要异步了),可以继续自顾自的处理它自己的事儿,不用干等着这个耗时操作返回。.Net中的这种异步编程模型,就简化了多线程编程,
阅读全文
摘要:BIO、NIO和AIO的区别(简明版) 同步异步,阻塞非阻塞; https://www.zhihu.com/question/19732473 转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6543960.html 一:事件分离器 在IO读写时,把 IO请求
阅读全文

浙公网安备 33010602011771号