一个节点的并发编程笔记
java并发编程各技术点重新梳理
一个节点
这个作者很懒,什么都没留下…
展开
-
无锁之Atomic大杂烩
Atomic包共有12个类,可以分为四大类,基本类型的原子更新,数组的原子更新,引用的原子更新,volatile字段的原子更新。Atomic包里的类基本都是使用Unsafe实现的包装类。原创 2016-03-23 18:00:22 · 1036 阅读 · 0 评论 -
ReadWriteLock使用
ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。只要没有 writer,读取锁可以由多个 reader 线程同时保持。写入锁是独占的。主要方法readLock() // 获得读取操作的锁 writeLock() // 获得写入操作的锁原创 2016-03-22 21:49:01 · 1116 阅读 · 0 评论 -
Queue大杂烩
Queue、BlockingQueue、ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、ConcurrentLinkedQueue原创 2016-03-22 15:19:09 · 921 阅读 · 0 评论 -
CyclicBarrier用法
CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。原创 2016-03-21 16:45:48 · 1590 阅读 · 1 评论 -
CountDownLatch用法
CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。原创 2016-03-21 16:03:06 · 5269 阅读 · 3 评论 -
Semaphore(信号量)
河面上有五座独木桥,每个独木桥只能承载一个人,100个人要过桥,只能一个一个排队,过桥期间最多只能同时有5个人在过桥(每桥一个人),当某座桥上的人到了对面,马上就会有另外一个人上桥,直到最后100个人都到了对面,怎么做?用Semaphore(信号量)。原创 2016-03-21 14:23:53 · 1416 阅读 · 0 评论 -
浅谈 Fork/Join
fork/join的java7新增加的功能,可以把它理解成一个并发框架。我们通过fork/join能将一个可分解的大任务,分解成多个子任务同步执行,执行完毕后,在将各子任务的结果进行合并,得到最终的结果。原创 2016-03-19 22:06:21 · 4161 阅读 · 0 评论 -
一致性hash
一致性hash算法思路是将整个哈希值空间组织成一个虚拟的圆环,并通过hash算法加入对应服务节点,通过ip计算hash坐标,组成服务节点圆环。原创 2016-03-18 16:32:39 · 1957 阅读 · 0 评论 -
浅谈HashMap
HashMap是基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。HashMap可以理解成是数组和链表的结合。原创 2016-03-17 22:42:19 · 1485 阅读 · 0 评论 -
浅谈java泛型
泛型即参数化类型,Java语言引入泛型的好处是安全简单。 泛型的优势: 编译阶段检测类型安全 强制转换都是隐式、自动的(代码复用率高)原创 2016-03-17 14:35:58 · 793 阅读 · 0 评论 -
List、Set、Map集合大杂烩
java集合主要分三种:list、set、map;其中list和set都继承自Collection接口,两者最大区别是set不能包含重复元素原创 2016-03-15 22:20:52 · 1423 阅读 · 1 评论 -
static关键字
static词义:静态的,可以用于修饰变量和方法,static方法块能够优先于构造函数执行。原创 2016-03-15 15:28:02 · 87 阅读 · 0 评论 -
final关键字
final词义为不可更改,可以用于成员变量、本地变量、方法以及类。原创 2016-03-15 15:18:16 · 737 阅读 · 0 评论 -
显式锁Lock、ReentrantLock
显式锁(Lock)void lock(); void lockInterruptibly(); void tryLock();void tryLock(long timeout,TimeUnit unit); void unlock(); Condition newCondition();原创 2016-03-14 21:17:20 · 629 阅读 · 0 评论 -
监控RuntimeException
在线程提前终止的最主要原因就是RuntimeException,由于这些异常表示出现了某种编程错误或者其他不可修复的错误,因此它们通常不会被捕获。它们不会在调用栈中逐层传递,而是默认地在控制台中输出栈追踪信息,并终止线程我们可以通过实现java.lang.Thread.UncaughtExceptionHandler接口来获取RuntimeException异常的信息。原创 2016-03-13 22:17:16 · 1057 阅读 · 0 评论 -
创建线程池的几种方式
我们可以通过Executors的静态方法来创建线程池。 newFixedThreadPool(int nThreads) newCachedThreadPool() newSingleThreadExecutor() newScheduledThreadPool(int corePoolSize)原创 2016-03-13 21:07:12 · 17976 阅读 · 1 评论 -
java异常处理
Throwable 类是 Java 语言中所有错误或异常的超类Error表示程序无法处理的错误,是运行应用程序中较严重问题,无法捕获。Exception指出了合理的应用程序想要捕获的条件,是可以捕获的。Exception异常分两大类:可查的异常(checked exceptions)和不可查的异常(unchecked exceptions)原创 2016-03-13 22:36:38 · 827 阅读 · 0 评论 -
Timer类的缺陷
Timer类负责管理延时任务以及周期任务,然而它存在一些缺陷,生产环境中应该考虑使用ScheduledThreadPoolExecutor来替代它。原创 2016-03-13 21:42:41 · 761 阅读 · 0 评论 -
创建线程的几种方式
ThreadRunnableExecutorService/Callable/Future原创 2016-03-13 12:12:46 · 3197 阅读 · 1 评论 -
volatile关键字
加锁机制既可以确保可见性又可以确保原子性,而volatile变量只能确保可见性。原创 2016-03-13 09:42:56 · 423 阅读 · 0 评论 -
synchronized关键字
对于普通同步方法,锁的是当前的实例对象对于静态同步方法,锁的是当前类的对象对于同步方法块,锁的是括号里配置的对象原创 2016-03-12 22:54:22 · 519 阅读 · 0 评论