摘要:
转载自:https://segmentfault.com/a/1190000015831791?utm_source=tag-newest#articleHeader0 就是以原子方式更新对象引用。 可以看到它持有一个对象的引用,-value,用volatile修饰,并通过unsafe类来操作该引用 阅读全文
摘要:
是另一种栅栏,它是一种两方two-party栅栏,各方在栅栏位置上交换数据。 当两方执行不对称的操作时,exchanger会非常有用。 场景例子: 当一个线程向缓冲区写入数据,而另一个线程从缓冲区中读取数据。这些线程可以使用Exchanger来汇合,并将满的缓冲区与空的缓冲区交换。当两个线程通过Ex 阅读全文
摘要:
栅栏类似于闭锁,它能阻塞一组线程直到某个事件发生。 栅栏与闭锁的关键区别 CyclicBarrier和CountDownLatch的区别 在于,所有线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其他线程。 我自己写了几个例子,加上自己的理解总结出几个不同。 1. Cycli 阅读全文
摘要:
Semaphore用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量。计数信号量还可以用来实现某种资源池,或者对容器施加边界。 Semaphore可以用于实现资源池。例如数据库连接池。我们可以构造一个固定长度的资源池,当池为空时,请求资源将会失败,但你真正希望看到的行为是阻塞而不 阅读全文
摘要:
参考自: https://www.cnblogs.com/linghu-java/p/8991824.html Future接口代表异步计算的结果,通过future提供的方法可以查看异步计算是否执行完成,或者等待执行结果并获取执行结果,同时还可以取消执行。 futureTask表示的计算 是通过ca 阅读全文
摘要:
CountDownLatch是一种灵活的闭锁实现。它可以使一个或多个线程等待一组事件的发生。 闭锁状态包括一个计数器,该计数器被初始化为一个正数,表示需要等待的事件的数量。countDown()方法递减计数器,表示有一个事件已经发生,而await方法等待计数器达到零,表示所有需要等待的事件都已经发生 阅读全文
摘要:
简单的实现生产者消费者模式。 阅读全文
摘要:
因为在看ArrayBlockIngQueue 发现问题。其中put,take,offer(e,time,unit), poll(time,unit)是阻塞的方法,offer(e),poll(),是非阻塞方法, 其中offer(e),offer(e,timeout,unit)两个方法中的获取锁的方法不 阅读全文
摘要:
blockingQueue 阻塞队列,一般用于消费者生产者模式。 就是通过ReentrantLock和condition实现的阻塞, 在我上一篇文章中简单用condition实现了消费者生产者模式。 https://www.cnblogs.com/liumy/p/11564375.html 本文的j 阅读全文
摘要:
上一篇文章介绍了condition的使用方法 https://www.cnblogs.com/liumy/p/11563772.html 这一篇文章介绍如何用condition来实现一个简单的阻塞队列 消费者 生产者模式。 消费者 生产者模式就是 生产者生产某些对象,消费者来消费这些对象。其中用对象 阅读全文