并发编程
文章平均质量分 79
ffffffzz94
这个作者很懒,什么都没留下…
展开
-
Java并发内存模型
Java并发内存模型的主要目标是定义程序中各个变量的访问规则,即虚拟机将变量存储到内存和从内存中取出的底层细节。此处的变量指的是实例字段、静态字段和构成数组的对象元素等线程公有的资源。因为只有这些被线程共享,存在竞争问题。如下是内存模型概念图: 主内存 : 所有的变量都存储在主内存中, 为线程共享,通过Save和Load操作与工作内存交互。 工作内存 : 每条线程都有自己的工作内存原创 2018-01-12 13:17:16 · 221 阅读 · 0 评论 -
Java并发编程:重入锁(ReentranceLock )、读写锁(ReadWriteLock)代码实现
重入锁: 同一时刻只能有一条线程拥有重入锁,但此线程可以重复获得锁。其余需求获得此锁的线程被阻塞。代码实现关键是记录当前获得锁的线程。 public class ReentranceLock { //记录当前获得锁的线程。 private Thread lockedBy = null; private boolean isLocked = false; private in原创 2018-01-13 17:03:26 · 2212 阅读 · 0 评论 -
Java并发编程:阻塞队列(Blocking Queues)、线程池(Thread Pools)的原理与代码实现
阻塞队列(Blocking Queues) 当线程尝试从空队列获取元素时会被阻塞,直到其他线程插入元素。当线程尝试向满队列添加元素时会被阻塞,直到其他线程取出元素。 public class BlockingQueue { //用队列结构存储元素 private Queue queue = new LinkedList<>(); private int limit = 10原创 2018-01-13 17:26:26 · 288 阅读 · 0 评论 -
Java线程状态转换
线程转换图 Thread.sleep(long millis) : 使当前线程阻塞规定的时间,不失去占有的锁。阻塞结束后转入可运行状态。 Thread.yield() : 使当前线程转入可运行状态,不是去占有锁。与sleep相比,不会被阻塞规定时间。 Thread.interrupt(): 设置中断标志为True,当此线程进入阻塞状态时,会抛出interrupted异常。通过捕捉in原创 2018-01-12 12:35:57 · 172 阅读 · 0 评论