![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发管理
Hengyu-coder
多看,多写,多思考!
展开
-
Volatile用法
Java语言提供了一种稍弱的关键词,即Volatile变量,用来确保将变量的更新操作通知到其它线程。仅当Volatile变量能简化代码的实现以及对同步的策略的验证时,才应该使用它们。如果在验证正确性时需要对可见性进行复杂的判断,那么就不要使用Volatile变量。 正确的使用方式包括:确保它们自身的状态的可见性,确保它们所引用的状态的可见性,以及表示一些重要的程序的生命周期事件的发生(例如:...原创 2018-07-27 17:10:25 · 125 阅读 · 0 评论 -
ThreadLocal用法
维护线程封闭性一种更规范的方式是使用ThreadLocal,这个类能使线程中的某个值与保存值得对象关联起来。原理是:为个线程存有共享变量的副本,因此不会出现并发问题,保存结构是Map ,key为线程ID。示例代码:public class Test { ThreadLocal<Long> longLocal = new ThreadLocal<Long>...原创 2018-07-27 17:14:07 · 126 阅读 · 0 评论 -
Semaphore用法
Semaphore翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。Semaphore类位于java.util.concurrent包下,它提供了2个构造器:public Semaphore(int permits) { //参数permits表示许可数目,即...原创 2018-07-27 17:19:33 · 451 阅读 · 2 评论 -
CountDownLatch用法
CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch类只提供了一个构造器:1 public CountDownLatch(int count) { }; //参数count...原创 2018-07-27 17:21:42 · 333 阅读 · 0 评论 -
CyclicBarrier用法
字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用。我们暂且把这个状态就叫做barrier,当调用await()方法之后,线程就处于barrier了。CyclicBarrier类位于java.util.concurrent包下,CyclicBarrier提供2个构造器:1 pub...转载 2018-07-27 17:26:53 · 162 阅读 · 0 评论 -
TimeUnit用法
TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式,几乎所有Java程序员都熟悉它,事实上sleep方法本身也很常用而且出现在很多面试中。如果你已经使用过Thread.sleep(),当然我确信你这样做过,那么你一定...转载 2018-07-27 17:30:55 · 1067 阅读 · 0 评论 -
DelayQueue用法
我们谈一下实际的场景吧。我们在开发中,有如下场景:模拟缓存实例 a) 关闭空闲连接。服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。 b) 缓存。缓存中的对象,超过了空闲时间,需要从缓存中移出。 c) 任务超时处理。在网络协议滑动窗口请求应答式交互时,处理超时未响应的请求。一种笨笨的办法就是,使用一个后台线程,遍历所有对象,挨个检查。这种笨笨的办法简单好用,但是对象数量过多...转载 2018-07-27 17:34:45 · 2184 阅读 · 0 评论