![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
gdfdfg
不积跬步,不成江海
展开
-
volatile变量
Java 语言提供了一种稍弱的同步机制,为volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。 理解volatile转载 2017-06-30 07:27:12 · 273 阅读 · 0 评论 -
ThreadLocal类的使用
维持线程封闭性的一种更规范方法是使用ThreadLocal,这个类能使线程中的某个值与保存值得对象关联起来。ThreadLocal提供了get与set等访问接口或方法,这些方法为每个使用该变量的线程都存有一份独立的副本,因此get总是返回由当前执行线程在调用set时设置的最新值。 ThreadLocal对象通常用于防止对可变的单实例变量(Singleton)或全局变量进行共享。转载 2017-06-30 07:41:53 · 210 阅读 · 0 评论 -
java常用并发类的使用与替换
1、Concurrent-HashMap 使用Concurrent-HashMap用来替换同步基于散列的Map,增加了对一些常见复合操作的支持,例如若没有则添加、替换以及有条件删除等。封装了额外的原子Map操作。2、CopyOnWriteArrayList CopyOnWriteArrayList用于替代同步List,在某些情况下它提供了更好的并发性能,并且在迭代期原创 2017-06-30 08:01:19 · 219 阅读 · 0 评论 -
栅栏的使用
栅栏(Barrier)类似于闭锁,它能阻塞一组线程直到某个时间发生。栅栏与闭锁的关键区别在于,所有线程必须同时到达栅栏位置,才能继续执行。闭锁用户等待事件,而栅栏用户等待其他线程。栅栏用于实现一些协议,比如多个线程之间到达后,再执行某个操作。 CyclicBarrier可以使一定数量的参与方反复地在栅栏位置汇集,它在并行迭代算法中非常有用:这种算法通常将一个问题拆分成一系列相互独立转载 2017-06-30 08:19:59 · 552 阅读 · 0 评论