Showing all posts tagged xian-cheng:

JDK 并发容器总结

JDK 并发容器总结 1. JDK 提供的并发容器 2. ConcurrentHashMap 3. CopyOnWriteArrayList 3.1 CopyOnWriteArrayList 简介 3.2 CopyOnWriteArrayList 是如何做到的? 3.3 CopyOnWriteArravList 读取和写入源码简单分析 3.3.1 CopyOnWriteArravList 读取操作的实现 3.3.2 CopyOnWriteArravList 写入操作的实现 4. Concurren...

八. AQS 原理以及 AQS 同步组件总结

八. AQS 原理以及 AQS 同步组件总结 1. AQS 简单介绍 2. AQS 原理 2.1 AQS 原理概览 2.2 AQS 对资源的共享方式 2.3 AQS底层使用了模板方法模式 3. Semaphore(信号量)-允许多个线程同时访问 4. CountDownLatch (倒计时器) 4.1 CountDownLatch 的两种典型用法 4.2 CountDownLatch 的使用示例 4.3 CountDownLatch 的不足 5. CyclicBarrier(循环栅栏) 5.1 Cy...

七. JUC 中的 Atomic 原子类总结

七. JUC 中的 Atomic 原子类总结 1. Atomic 原子类介绍 1.1 原子类类型 基本类型 数组类型 引用类型 对象的属性修改类型 2. 基本类型原子类 2.1 基本类型原子类介绍 2.2 AtomicInteger 常见方法使用 2.3 基本数据类型原子类的优势 2.4 AtomicInteger 线程安全原理简单分析 3. 数组类型原子类 3.1 数组类型原子类介绍 3.2 AtomicIntegerArray 常见方法使用 4. 引用类型原子类 4.1 引用类型原子类介绍 4....

Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比

Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比 1. synchronized关键字最主要的三种使用方式的总结 1.1 双重校验锁实现对象单例(线程安全) 2. synchronized 关键字底层原理总结 2.1 synchronized 同步语句块的情况 2.2 synchronized 修饰方法的的情况 3. JDK1.6 之后的底层优化 3.1 JDK1.6之前 3.2 JDK1.6 之后 锁的状态 1. 偏向锁 2. ...

一. 线程入门

一. 线程入门 1. 进程和多线程简介 1.1 何为进程? 1.2 何为线程? 1.3 线程和进程的关系 1.4 线程有哪些基本状态?这些状态是如何定义的? 1.5 线程的优先级 1.6 何为多线程? 1.7 为什么多线程是必要的? 1.8 为什么提倡多线程而不是多进程? 2. 几个重要的概念 2.1 同步和异步 2.2 并发(Concurrency)和并行(Parallelism) 2.3 高并发 2.4 临界区 2.5 阻塞和非阻塞 3. 多线程 3.1 使用多线程常见的三种方式 3.2 Jav...

六. 线程池与Executor 框架

六. 线程池与Executor 框架 1. 使用线程池的好处 2. Executor 框架 2.1 Executor 简介 2.2 Executor 框架结构(主要由三大部分组成) 1 任务 2 任务的执行 3 异步计算的结果 2.3 Executor 框架的使用示意图 3. ThreadPoolExecutor详解 3.1 ThreadPoolExecutor类的四个比较重要的属性 3.2 ThreadPoolExecutor类中提供的四个构造方法 3.3 如何创建ThreadPoolExecut...

五. 并发编程中一些问题

五. 并发编程中一些问题 1. 多线程就一定好吗?快吗?? 2. 上下文切换 2.1 减少上下文切换 2.2 CAS算法 2.3 协程 3. 避免死锁 3.1 如何产生的死锁 3.2 避免死锁的常见方法 3.3 解决资源限制 五. 并发编程中一些问题 并发编程的问题 1. 多线程就一定好吗?快吗?? 并发编程的目的就是为了能提高程序的执行效率提高程序运行速度,但是并发编程并不总是能提高程序运行速度的,而且并发编程可能会遇到很多问题, 比如:内存泄漏、上下文切换、死锁还有受限于硬件和软件的资源...

三. 线程间通信知识点补充

三. 线程间通信知识点补充 1. 管道输入/输出流 2. Thread.join()的使用 3. ThreadLocal的使用 3.1 ThreadLocal介绍 3.2 ThreadLocal方法 3.3 InheritableThreadLocal 三. 线程间通信知识点补充 线程通信知识补充 1. 管道输入/输出流 管道输入/输出流主要用于线程之间的数据传输,而且传输的媒介为内存。 管道输入/输出流主要包括下列两类的实现: 面向字节: PipedOutputStream、 Pip...

四. Lock锁的使用

四. Lock锁的使用 1 Lock接口 1.1 Lock接口简介 1.2. Lock的简单使用 1.3. Lock接口的特性和常见方法 2. Lock接口的实现类:ReentrantLock 2.1 ReentrantLock类常见方法 2.2 第一个ReentrantLock程序 3. Condition接口简介 3.1 使用Condition实现等待/通知机制 4. 公平锁与非公平锁 5. ReadWriteLock接口的实现类:ReentrantReadWriteLock 5.1 简介 5....

二. 线程安全

二. 线程安全 0. 锁 0.1 为什么需要锁(并发控制)? 0.2 并发控制机制(锁) 0.3 两种锁的使用场景 0.4 乐观锁的缺点 0.5 乐观锁与悲观锁详解 1. synchronized关键字(1) 1.1 变量安全性 1.2 多个对象对个锁 1.3 synchronized方法与锁对象 1.4 脏读 1.5 synchronized锁重入 1.6 同步不具有继承性 2. synchronized关键字(2) 2.1 synchronized方法的缺点 2.2 synchronized(...

线程总结

一.线程入门 1. 进程和多线程简介 1.1 何为进程? 1.2 何为线程? 1.3 线程和进程的关系 1.4 线程有哪些基本状态?这些状态是如何定义的? 1.5 线程的优先级 1.6 何为多线程? 1.7 为什么多线程是必要的? 1.8 为什么提倡多线程而不是多进程? 2. 几个重要的概念 2.1 同步和异步 2.2 并发(Concurrency)和并行(Parallelism) 2.3 高并发 2.4 临界区 2.5 阻塞和非阻塞 3. 多线程 3.1 使用多线程常见的三种方式 3.2 Java...