随笔分类 -  Java多线程

随笔内容来自于《Java高并发编程详解》和互联网
摘要:Future设计模式提供一种异步执行方式。提供这样一个场景,我们进行一个查询调用,该调用耗时时间长,因此当前线程不得不一直阻塞,直到拿到结果。这种情况下,就可以使用异步执行的方式,它会在进行调用时直接返回一个“凭证”,当前线程可以在后续某个时刻通过该“凭证”拿到查询结果。 一、Future设计模式实 阅读全文
posted @ 2020-12-19 16:52 Aidan_Chen 阅读(1058) 评论(0) 推荐(0)
摘要:一、ReentrantLock功能详解 1.1 ReentrantLock是可重入且互斥的 1 public class Test3 { 2 static class RunnableTest implements Runnable{ 3 private ReentrantLock lock = n 阅读全文
posted @ 2020-11-07 13:10 Aidan_Chen 阅读(723) 评论(0) 推荐(0)
摘要:一、synchronized的使用 官方文档对其解释是,synchronized关键字可以实现一个简单的策略来防止线程干扰和内存一致性错误,如果一个对象对多个线程是可见的,那么对该对象的所有读或者写都将通过同步的方式来进行。 synchronized的使用方式有三种: 修饰静态方法,对class进行 阅读全文
posted @ 2020-09-03 20:50 Aidan_Chen 阅读(420) 评论(0) 推荐(0)
摘要:一、概述 本章将详细介绍任务在线程池中的执行情况、空闲线程的回收过程、默认提供的四种拒绝策略、线程池关闭以及个人觉得比较有意思的地方。 二、任务在线程池中的执行过程 线程池的一个重要作用是管理线程,实现线程的复用,避免反复创建和销毁线程所带来的资源消耗,我们通过new方法创建线程,start( )方 阅读全文
posted @ 2020-08-29 17:21 Aidan_Chen 阅读(435) 评论(0) 推荐(0)
摘要:知识关联: CPU Cache模型与JMM JMM与并发三大特性 (示例使用jdk1.7) volatile关键字是基于MESI缓存一致性协议的,协议的主要内容是多个CPU从主存读取数据到缓存,当其中某个CPU修改了缓存中数据,该数据会立刻同步回主存,其他CPU通过总线嗅探机制可以感知到数据的变化, 阅读全文
posted @ 2020-05-17 00:25 Aidan_Chen 阅读(241) 评论(0) 推荐(0)
摘要:一、JMM与原子性 Java中对基本数据类型变量的读取赋值都是原子性的,对引用类型变量的读取和赋值也是原子性。这类操作都是不可被中断的,要么执行,要么不执行。 (1) 赋值操作:x = 10; 操作是原子性。 (2) 赋值操作:y = x; 操作是非原子性。将变量x赋值给y,包含两个重要步骤: 1) 阅读全文
posted @ 2020-05-15 23:25 Aidan_Chen 阅读(314) 评论(0) 推荐(0)
摘要:一、CPU Cache模型 1.1 产生原因 在计算机中,所有的运算操作都是由CPU的寄存器完成的,CPU指令的执行过程需要涉及数据的读取和写入操作,CPU访问的所有数据都来自主存。随着技术进步,CPU的处理速度与内存的访问速度之间的差距越来越大,此时CPU直连内存的访问方式会限制CPU,降低CPU 阅读全文
posted @ 2020-05-15 23:21 Aidan_Chen 阅读(675) 评论(0) 推荐(0)