Java - 多线程
Sam-9527
这个作者很懒,什么都没留下…
展开
-
JUC-LinkedBlockingQueue学习
一.概述LinkedBlockingQueue是单向链表实现的可选的有界的阻塞队列 1. 队列元素是先进先出FIFO (first-in-first-out) 2. 队列的头元素head是在队列中时间最长的元素,因为最先入队列的,获取操作(poll、peek、take)返回头元素head 3. 队列的尾元素last是在队列中时间最短的元素,因为最后入队列的,新元素插入(offer、put原创 2017-11-25 01:00:19 · 477 阅读 · 0 评论 -
JUC-ArrayBlockingQueue学习
一.概述ArrayBlockingQueue是一个由数组支持的有界阻塞队列 1. 队列元素是先进先出(FIFO) 2. 队列的头元素是在队列中时间最长的元素,因为最先入队列的,获取操作(poll、peek、take)返回头元素 3. 队列的尾元素是在队列中时间最短的元素,因为最后入队列的,新元素插入(offer、put)队列的尾部 4. 数组大小一旦固定,就不允许再增加变量, 试图向已满队原创 2017-12-01 01:29:37 · 443 阅读 · 0 评论 -
synchonized同步方法(一)
一.线程安全 - 方法内部变量"非线程安全"问题存在于"实例变量"中如果私有变量是定义在方法内部,则不存在"非线程安全"问题,所得的结果也就是"线程安全"的了二.非线程安全 - 实例变量1. 如果多个线程共同访问1个对象中的实例变量,运行结果可能出现交叉的情况,则出现"非线程安全"问题2. 多个线程访问同一个对象中的同步方法时一定是线程安全的三.多个对象多个原创 2017-06-11 18:17:15 · 440 阅读 · 0 评论 -
wait、yield、sleep、join的比较
原创 2017-03-29 18:14:25 · 376 阅读 · 0 评论 -
JUC - Java内存模型JMM
一.概述C/C++等语言直接使用物理硬件和操作系统的内存模型,因此由于不同平台上内存模型的差异,就必须针对不同的平台开发对应的程序。Java虚拟机定义了一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统之间的内存访问差异,实现“一次编译,处处运行”的效果。二.硬件的效率和一致性众所周知,计算机的存储设备和处理器的运算速度有几个数量级的差距,...原创 2018-05-08 22:44:32 · 557 阅读 · 0 评论 -
JUC - 基本线程阻塞原语LockSupport
一.概述LockSupport 和 CAS 是Java并发包中很多并发工具控制机制的基础,它们底层其实都是依赖Unsafe实现。 LockSupport是创建锁和其他同步类的基本线程阻塞原语,park 和 unpark 方法提供了阻塞和解除阻塞线程的有效方法 LockSupport类以及每个使用它的线程和一个permit({@link java.util.concurrent.Semaph...原创 2018-04-26 20:26:04 · 804 阅读 · 0 评论 -
JUC目录
1. 锁LocksJUC - 基本线程阻塞原语LockSupport原创 2018-04-26 21:02:21 · 364 阅读 · 0 评论 -
JUC - 可重入锁ReentrantLock
一. ReentrantLock初识上一篇介绍了实现同步锁的基础AQS:JUC - 队列同步器AQS 1. ReentrantLock具有与 synchronized 相同的一些基本行为和内存语义,但是比synchronized更加灵活强大 2. ReentrantLock是基于AQS实现的,上一篇介绍了AQS:JUC - 队列同步器AbstractQueuedSynchronizer...原创 2018-06-02 23:25:36 · 537 阅读 · 0 评论 -
JUC - 队列同步器AQS
一. AQS概述在Concurrent包中,基本上并发工具都是使用了AQS作为核心,因此AQS也是并发编程中最重要的地方。同步器AQS是实现锁的关键,锁和AQS很好隔离了二者所需关注的领域:锁的API面向使用者,定义了与锁交互的公共行为锁的实现是依托给AQS实现的,AQS面向的是线程访问和资源控制AQS中采用了一个状态位state +一个FIFO的队列的方式,记录了锁的获取,释放...原创 2018-05-27 15:20:17 · 1087 阅读 · 2 评论