Java线程
lemonmini
这个作者很懒,什么都没留下…
展开
-
Java并发系列之ReentrantLock源码分析
在Java5.0之前,协调对共享对象的访问可以使用的机制只有synchronized和volatile。我们知道synchronized关键字实现了内置锁,而volatile关键字保证了多线程的内存可见性。在大多数情况下,这些机制都能很好地完成工作,但却无法实现一些更高级的功能,例如,无法中断一个正在等待获取锁的线程,无法实现限定时间的获取锁机制,无法实现非阻塞结构的加锁规则等。而这些更灵活的加锁...原创 2019-10-14 18:31:32 · 81 阅读 · 0 评论 -
详细分析Java并发集合LinkedBlockingQueue的用法
数组的长度在创建时就必须确定,如果数组长度小了,那么ArrayBlockingQueue队列很容易就被阻塞,如果数组长度大了,就容易浪费内存。而队列这个数据结构天然适合用链表这个形式,而LinkedBlockingQueue就是使用链表方式实现的阻塞队列。 一、链表实现 1.1 Node内部类 /** * 链表的节点,同时也是通过它来实现一个单向链表 */ static class Nod...原创 2019-10-14 18:00:48 · 358 阅读 · 1 评论 -
Java使用Condition控制线程通信的方法实例详解
本文实例讲述了Java使用Condition控制线程通信的方法。分享给大家供大家参考,具体如下: 一、前言 当使用Lock对象来保证同步时,Java提供了一个Condition类来保持协调,使用Condition可以让那些已经得到Lock对象、却无法继续执行的线程释放Lock对象,Condtion对象也可以唤醒其他处于等待的线程。 Condition 将同步监视锁方法(wait、notify 和 ...原创 2019-10-12 17:19:54 · 119 阅读 · 0 评论 -
Java面试宝典(1)
JAVA中能创建volatile数组吗?volatile能使得一个非原子操作变成原子操作吗? 可以,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。 Java 中读取 long 类型变量不是原子的,需要分成两步,如果一个线程正在修改该 long 变量的值,另一个线程可能只能看到该值的一半(前 32 位)。但是volatile 型的 long 或 do...原创 2019-09-18 11:55:10 · 111 阅读 · 0 评论