![](https://img-blog.csdnimg.cn/2019122310183884.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java多线程
文章平均质量分 93
Java多线程学习总结
@从入门到入土
学无止境
展开
-
synchronized原理
目录synchronized的三种应用方式synchronized的字节码指令synchronized的锁的原理Java对象头Monitorsynchronized锁的优化自旋锁与自适应自旋锁消除锁粗化偏向锁轻量级锁重量级锁锁升级wait和notify的原理wait和notify为什么需要在synchronized里面?synchro...原创 2018-08-31 22:17:35 · 15101 阅读 · 3 评论 -
volatile原理
目录JVM内存结构JMM (Java Memory Model)主内存和工作内存JMM怎么解决原子性、可见性、有序性的问题?原子性保障可见性有序性volatile如何保证可见性?什么是指令重排序?内存屏障LoadLoad BarriersLoadStore BarriersStoreStore BarriersStoreLoad Barrie...原创 2018-08-29 23:45:20 · 4064 阅读 · 0 评论 -
线程的启动与停止
目录线程的状态线程的创建继承 Thread 类创建线程实现 Runnable 接口创建线程实现 Callable 接口通过 FutureTask 包装器来创建 Thread 线程线程的停止interrupt()Thread.interrupted()isInterrupted()其他的线程复位方式为什么要复位?其他的线程终止方式线程的状态...原创 2018-08-26 15:47:47 · 9390 阅读 · 0 评论 -
Lock原理分析
目录LockReentrantLockReentrantReadWriteLockLock和synchronized的简单对比AQS(AbstractQueuedSynchronizer)AQS的内部实现CASReentrantLock的实现原理lock与unlock过程总结公平锁和非公平锁的区别ConditionLockSupportLock...原创 2018-09-08 23:56:09 · 14847 阅读 · 0 评论 -
CountDownLatch
目录CountDownLatch使用案例使用场景源码分析CountDownLatchCountdownlatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完毕再执行。从命名可以解读到countdown是倒数的意思,类似于我们倒计时的概念。Countdownlatch提供了两个方法,一个是countDown,一个是await, Count...原创 2018-09-14 21:49:07 · 2077 阅读 · 0 评论 -
Semaphore
Semaphore Semaphore也就是我们常说的信号灯,semaphore可以控制同时访问的线程个数,通过acquire获取一个许可,如果没有就等待,通过release释放一个许可。有点类似限流的作用。叫信号灯的原因也和他的用处有关,比如某商场就5个停车位,每个停车位只能停一辆车,如果这个时候来了10辆车,必须要等前面有空的车位才能进入。 使用案例 public stat...原创 2018-09-14 21:50:18 · 2109 阅读 · 1 评论 -
原子操作
原子操作 在Java5以后,提供了原子操作类,这些原子操作类提供了一种简单、高效以及线程安全的更新操作。而由于变量的类型很多,所以Atomic一共提供了12个类分别对应四种类型的原子更新操作,基本类型、数组类型、引用类型、属性类型。基本类型对应:AtomicBoolean、AtomicInteger、AtomicLong。数组类型对应:AtomicIntegerArray、Atom...原创 2018-09-14 21:51:09 · 873 阅读 · 0 评论 -
线程池
目录线程池的作用线程池核心类ExecutorsExecutors.newFixedThreadPoolExecutors.newSingleThreadExecutorExecutors.newCachedThreadPoolExecutors.newScheduledThreadPoolExecutors.newWorkStealingPoolThreadpo...原创 2018-09-16 23:02:48 · 1892 阅读 · 0 评论