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