多线程
吴孟达
关注微信公众号"程序员达叔",免费领取海量学习资料
展开
-
Java 理论与实践: 正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种主转载 2014-10-21 23:00:22 · 1080 阅读 · 0 评论 -
深入理解ConcurrentMap.putIfAbsent(key,value) 用法
先看一段代码:Java代码 public class Locale { private final static Map map = new HashMap(); public static Locale getInstance(String language, String country, String v转载 2014-10-22 22:26:46 · 13480 阅读 · 1 评论 -
多线程读写共享变量时,synchronized与volatile的作用
在《effective java》中看的的知识点,在工作中确实遇到了~关键字synchronized可以保证在同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块。同步并不是单单指线程之间的互斥。如果没有同步,一个线程的变化就不能被其他线程看到。同步不仅可以阻止一个线程看到对象处于不一致的状态之中, 它还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护的之前的所原创 2014-10-21 22:47:45 · 5869 阅读 · 2 评论 -
Runnable,Callable,Future,FutureTask的区别与联系
这几个接口和类,我们工作中可能会经常用到,但未必很清楚之间的区别和联系~原创 2016-09-09 19:16:40 · 1623 阅读 · 0 评论 -
使用线程池与CountDownLatch多线程提升系统性能
下面这个业务场景,大家可能都会遇到,在遍历一个list的时候,需要对list中的每个对象,做一些复杂又耗时的操作,比如取出对象的uid,远程调用一次userservice的getUserByUid方法,这属于IO操作了,可怕的是遍历到每个对象时,都得执行一次这种RPC的IO操作(甚至不止一次,因为可能还有别的接口需要去调)还有复杂的业务逻辑需要cpu去计算。以上这种场景,属于IO操作和CPU操作混合原创 2016-08-17 21:03:23 · 7767 阅读 · 0 评论