
java.util.concurrent
文章平均质量分 80
yue2008
这个作者很懒,什么都没留下…
展开
-
ReentrantLock的使用
ReentrantLock是一个可重入的互斥锁,重入锁是一种递归无阻塞的同步机制。ReentrantLock由最近成功获取锁,还没有释放的线程所拥有,当锁被另一个线程拥有时,调用lock的线程可以成功获取锁。如果锁已经被当前线程拥有,当前线程会立即返回。 重入锁的构造方法提供一个可选的公平参数: 公平情况下,操作会排一个队按顺序执行,来保证执行顺序。 ...2015-02-01 21:58:44 · 322 阅读 · 0 评论 -
ReentrantReadWriteLock的使用
ReentrantReadWriteLock会使用两把锁来解决问题,一个读锁,一个写锁。 ReadLock排斥WriteLock不排斥ReadLock,即多个读锁不互斥;WriteLock则既排斥WriteLock又排斥ReadLock。 WriteLock可以降级为ReadLock,顺序是:先获得WriteLock再获得ReadLock,然后释放WriteLock。 private...2015-02-01 22:06:24 · 200 阅读 · 0 评论 -
java.util.concurrent.atomic包的常用类
java.util.concurrent.atomic包主要的常用类包括:AtomicBoolean、AtomicInteger、AtomicLong等。该工具包支持在单个变量上解除锁定的线程安全编程。 1、AtomicBoolean的常用方法 AtomicBoolean b = new AtomicBoolean(false); b.compareAndSet(false, t...2015-02-01 22:16:27 · 183 阅读 · 0 评论 -
TimeUnit的使用
这是一个简单易用的日期工具类。 //关于秒的常用方法 TimeUnit.SECONDS.toMillis(1) 1秒转换为毫秒数 TimeUnit.SECONDS.toMinutes(60) 60秒转换为分钟数 TimeUnit.SECONDS.sleep(5) 线程休眠5秒 TimeUnit.SECONDS.convert(1, TimeUnit.MINUTES)...2015-02-01 22:26:05 · 481 阅读 · 0 评论 -
CountDownLatch的使用
CountDownLatch是一个同步辅助类,犹如倒计时计数器,创建对象时通过构造方法设置初始值,调用CountDownLatch对象的await()方法则处于等待状态,调用countDown()方法就将计数器减1,当计数到达0时,则所有等待者或单个等待者开始执行。 public static void main(String[] args) { ExecutorSe...2015-02-01 22:30:58 · 92 阅读 · 0 评论 -
ArrayBlockingQueue和LinkedBlockingQueue的使用
BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量,让容量满时往BlockingQueue中添加数据时会造成阻塞,当容量为空时取元素操作会阻塞。 ArrayBlockingQueue是一个由数组支持的有界阻塞队列。在读写操作上都需要锁住整个容器,因此吞吐量与一般的实现是相似的,适合于实现“生产者消费者”模式。 基于链...原创 2015-02-02 00:32:28 · 871 阅读 · 0 评论 -
支持多线程并发的计数器实现
该计数器支持多个客户端线程并发访问,计数器的key/value存储在一个静态型的AtomicLongMap对象中,另外有一个守护线程定期将计数器的数据取出,然后存储到数据库、文件等地方。该范例可以做适当的调整,然后应用到统计页面访问量、菜单点击量、IP访问量等计数的场景。下面是计数器的源码: public class PageViewsStatistics { priva...原创 2016-05-13 21:15:35 · 2220 阅读 · 1 评论