并发
文章平均质量分 87
iteye_6780
这个作者很懒,什么都没留下…
展开
-
ThreadLocal理解
一.ThreadLocal是什么 JDK 1.2的版本中就提供java.lang.ThreadLocal,当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 ThreadLocal 数据的存储是使用了其静态内部类:ThreadLocalM...原创 2016-03-11 12:30:01 · 122 阅读 · 0 评论 -
并发设计模式
1. 什么是设计模式在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题 ,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领 域引入到计算机科学的。 著名的4人帮: Erich Gamma,Richard Helm, Ralph Johnson ,John Vlissides (Gof) ...原创 2016-07-10 18:46:09 · 270 阅读 · 0 评论 -
JDK并发编程2
1. 线程池的基本使用 1.1.为什么需要线程池平时的业务中,如果要使用多线程,那么我们会在业务开始前创建线程,业务结束后,销毁线程。但是对于业务来说,线程的创建和销毁是与业务本身无关的,只关心线程所执行的任务。因此希望把尽可能多的cpu用在执行任务上面,而不是用在与业务无关的线程创建和销毁上面。而线程池则解决了这个问题,线程池的作用就是将线程进行复用。 1.2.JDK为我...原创 2016-07-10 18:37:58 · 177 阅读 · 0 评论 -
JDK并发编程1
1. 各种同步控制工具的使用1.1 ReentrantLock ReentrantLock感觉上是synchronized的增强版,synchronized的特点是使用简单,一切交给JVM去处理,但是功能上是比较薄弱的。在JDK1.5之前,ReentrantLock的性能要好于synchronized,由于对JVM进行了优化,现在的JDK版本中,两者性能是不相上下的。如果是简...原创 2016-07-10 18:02:43 · 216 阅读 · 0 评论 -
happen-before 规则
Happen-Before规则程序顺序原则:一个线程内保证语义的串行性volatile规则:volatile变量的写,先发生于读,这保证了volatile变量的可见性锁规则:解锁(unlock)必然发生在随后的加锁(lock)前传递性:A先于B,B先于C,那么A必然先于C 线程的start()方法先于它的每一个动作线程的所有操作先于线程的终结(Thread.join()...原创 2016-06-27 23:42:50 · 210 阅读 · 0 评论 -
java并发学习
java并发特性,原子性、有序性、可见性happen-before规则无锁编程(CAS)JDK并发编程1JDK并发编程2原创 2016-06-27 22:37:11 · 107 阅读 · 0 评论 -
java并发特性,原子性、有序性、可见性
原子性是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其它线程干扰。Java中的原子操作包括:1)除long和double之外的基本类型的赋值操作2)所有引用reference的赋值操作3)java.concurrent.Atomic.* 包中所有类的一切操作。但是java对long和double的赋值操作是非原子操作!!long和d...原创 2016-06-27 22:34:23 · 215 阅读 · 0 评论 -
Java中的锁(转载)
在学习或者使用Java的过程中进程会遇到各种各样的锁的概念:公平锁、非公平锁、自旋锁、可重入锁、偏向锁、轻量级锁、重量级锁、读写锁、互斥锁等待。这里整理了Java中的各种锁,若有不足之处希望大家在下方留言探讨。公平锁和非公平锁公平锁是指多个线程在等待同一个锁时,必须按照申请锁的先后顺序来一次获得锁。公平锁的好处是等待锁的线程不会饿死,但是整体效率相对低一些;非公平锁的好处是整体...原创 2016-05-05 11:35:25 · 117 阅读 · 0 评论 -
Key锁
java中的几种锁:synchronized,ReentrantLock,ReentrantReadWriteLock已基本可以满足编程需求,但其粒度都太大,同一时刻只有一个线程能进入同步块,这对于某些高并发的场景并不适用。本文实现了一个基于KEY(主键)的互斥锁,具有更细的粒度,在缓存或其他基于KEY的场景中有很大的用处。下面将讲解这个锁的设计和实现(关于这个锁的讨论贴:KeyLock讨...原创 2016-04-19 12:21:07 · 234 阅读 · 0 评论 -
无锁(CAS)编程
1. 无 锁类 的原理 详 解1.1.CAS CAS算法的过程是这样:它包含3个参数CAS(V,E,N)。V表示要更新的变量,E表示预期值,N表示新值。仅当V值等于E值时,才会将V的值设为N,如果V值和E值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。最后,CAS返回当前V的真实值。CAS操作是抱着乐观的态度进行的,它总是认为自己可以成功完成操作。当多个线程...原创 2016-09-06 11:46:13 · 328 阅读 · 0 评论