同步框架AbstractQueuedSynchronizer Java并发编程核心在于java.concurrent.util包 而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这个行为的抽象就是基于AbstractQueuedSynchron ...
分类:
其他好文 时间:
2020-07-18 19:45:38
阅读次数:
71
可能在synchronized关键字的实现原理中,你已经知道了它的底层是使用Monitor的相关指令来实现的,但是还不清楚Monitor的具体细节。本文将让你彻底Monitor的底层实现原理。 管程 一个管程可以被认为是一个带有特殊房间的建筑,这个特殊房间只能被一个线程占用。这个房间包含很多数据和代 ...
分类:
编程语言 时间:
2020-07-12 20:43:42
阅读次数:
75
JUC:java.util.concurrent (Java并发编程工具类) 一般面试提问:面向对象和高级语法、Java集合类、Java多线程、JUC 和高并发、Java IO和 NIO 获取多线程的4种方法: 1.继承Thread类,重写run方法(其实Thread类本身也实现了Runnable接 ...
分类:
编程语言 时间:
2020-07-11 19:29:37
阅读次数:
70
Volatile关键字 保证线程间共享变量的可见性、有序性。 如何保证可见性:多了一个Lock的汇编指令。 什么是可见性 硬件 运行速度:CPU > 内存 > IO设备;所以在硬件的使用中,为了提高效率 CPU增加了高速缓存 读数据时,从内存读,然后缓存到CPU缓存,线程修改变量时会先同步到缓存,再 ...
分类:
编程语言 时间:
2020-07-11 16:56:15
阅读次数:
61
1、定制线程池的大小 1.1、线程池的合理大小 取决于 未来提交的任务类型 和 所部署的系统特征; 2、配置ThreadPoolExecutor 2.1、ThreadPoolExecutor 提供了 一些基本的Executor的实现: (由 工具类Executors 提供的newCachedThre ...
分类:
编程语言 时间:
2020-07-10 11:40:50
阅读次数:
82
1、锁的作用 Java中的锁主要用于保障多并发线程情况下数据的一致性。 在多线程编程中为了保障数据的一致性,通常需要在使用对象或者方法之前加锁,这时如果有其他线程也需要使用该对象或方法。则首先要获得锁,如果某个线程发现锁正在被其他线程使用,就会进入阻塞队列等待锁的释放,直到其他线程执行完成并释放锁, ...
分类:
编程语言 时间:
2020-07-07 00:15:49
阅读次数:
91
本文源码:GitHub·点这里||GitEE·点这里一、Lock体系结构1、基础接口简介Lock加锁相关结构中涉及两个使用广泛的基础API:ReentrantLock类和Condition接口,基本关系如下:Lock接口Java并发编程中资源加锁的根接口之一,规定了资源锁使用的几个基础方法。ReentrantLock类实现Lock接口的可重入锁,即线程如果获得当前实例的锁,并进入任务方法,在线程没
分类:
编程语言 时间:
2020-07-06 01:22:10
阅读次数:
70
分工、同步、互斥的历史由来 分工:单道、多道、分时 同步:线程通信(组织编排任务) 互斥:因(多线程访问共享资源)果(串行化共享资源的访问) 1切都是为了提高性能 2.可见性、原子性、有序性 可见性:CPU缓存导致可见性问题 原子性:线程切换导致原子性问题 有序性:编译优化带来的有序性问题 3.ja ...
分类:
编程语言 时间:
2020-07-02 21:43:30
阅读次数:
69
Java并发编程-并发工具包java.util.concurrent使用指南 转:https://blog.csdn.net/axi295309066/article/details/65665090 ...
分类:
其他好文 时间:
2020-06-27 11:50:17
阅读次数:
110
最近在读《Java并发编程的艺术》,书中关于ConcurrentLinkedQueue的描述并不是基于JDK1.8 相较于JDK1.8版本的,还是修改了挺多地方的,比如关于HOPS的设计意图直接去掉了 参考贴:https://www.jianshu.com/p/08e8b0c424c0https:/ ...
分类:
其他好文 时间:
2020-06-25 17:19:59
阅读次数:
58