
并发编程
torvalds_29
这个作者很懒,什么都没留下…
展开
-
并发编程之cas
并发编程之cas cas compare and swap 原语操作通过cpu指令实现。cas操作是一组不可分割的指令,必须连续执行,在执行过程中不允许被中断。 cas(V,E,U) 一般情况包含三个参数:V表示要更新的变量,E表示期望的值,U表示新值。cas希望提供一个期望值,如果当前值与期望值相同则执行交换,更新变量为新值。 java 中的cas依赖于Unsafe类实现,Unsafe类位于s...原创 2019-01-03 20:28:00 · 228 阅读 · 0 评论 -
并发编程之Lock
Locksychronized缺陷sychronized与lock区别lock实现类 lock是java concurrent locks包下提供的锁机制,已经有了sychronized后为什么还需要Lock呢? sychronized缺陷 1.在同一时刻只能有一个线程时执行同步代码,不能区分读写,并发性不高。 2.如果获取锁线程在执行较长时间的io操作或正在sleep,其他线程只能持续等待。 s...原创 2019-01-02 21:44:01 · 230 阅读 · 0 评论 -
并发编程之synchronized
synchronized 局部锁全局锁jdk1.6后对synchronized的优化重量级锁synchronized优化偏向锁轻量级锁锁粗化锁消除 我们说到并发编程我们很容易想到synchronized关键字,sychronized是锁机制中比较常见的同步锁,synchronized是基于jvm级别的锁,由jvm管理锁的获取与释放,使用者无需担心锁不释放问题。synchronized可以修饰方法,...原创 2019-01-02 21:51:46 · 473 阅读 · 0 评论 -
并发编程之volatile关键字
volatile关键字(一)解决线程间共享变量的不可见性。(二)禁止指令重排序。(三)volatile不具备原子性 在并发编程领域当中,volatile关键字经常被提到,实际项目中很少用到这个关键字。但对于某些并发场景volatile还是能解决规避一些问题的。 volatile关键字主要有以下两方面作用: (一)解决线程间共享变量的不可见性。 计算机在处理程序时希望能得到更快的速度,因此在cpu中...原创 2019-01-02 22:01:07 · 129 阅读 · 0 评论 -
并发编程之 ThreadLocal
ThreadLocalThreadLocal数据结构ThreadLocal内存泄漏问题为什么ThreadLocalMap的key是弱引用类型ThreadLocal使用场景 ThreadLocal数据结构 ThreadLocal是一个线程本地变量,数据结构是存放在Thread中的一个ThreadLocal.ThreadLocalMap threadlocals,这是一个简单的Hash结构Ma...原创 2019-01-02 22:05:29 · 111 阅读 · 0 评论 -
并发编程之 concurrent包概述
concurrent包概述QueueConcurrentMap闭锁 CountDownLatch栏栅交换机 Exchanger信号量:Semaphore线程池 执行服务 ExecutorService定时执行服务 ScheduleExecutorServiceForkJoinPoolAtomic系列 Queue 接口BlockingQueue:队列存储,有put,take操作,put操作在队列满时...原创 2019-01-02 22:10:32 · 192 阅读 · 0 评论