摘要:
1. 基本属性 底层使用动态数组实现 1.1 DEFAULTCAPACITY_EMPTY_ELEMENTDATA 无参构造器中初始化数组 确定扩容后的大小 2. 扩容 3. subList 4. 迭代器 此类的 iterator 和 listIterator 方法返回的迭代器是快速失败的:在创建迭代 阅读全文
摘要:
原文地址:深入JVM锁机制1-synchronized 1. 线程的状态与转换 当多个线程同时请求某个对象监视器时,对象监视器会设置几种状态用来区分请求的线程: Contention List:所有请求锁的线程将被首先放置到该竞争队列 Entry List:Contention List 中那些有资 阅读全文
摘要:
14.1 状态依赖性管理 基于先检查后执行的状态依赖性操作在多线程下常常发生一些我们不希望的结果.因此有必要对状态依赖操作进行管理, 重试的实现方式 : 自旋等待. 在条件不成立时一直询问, 直到条件成立. 会消耗大量的CPU时间 休眠. 如果条件不成立, 则休眠一段时间, 休眠过后继续测试条件是否 阅读全文
摘要:
Java 5.0 提供的新的加锁机制:当内置加锁机制不适合时 , 作为一种可选择的高级功能 一个可重入的互斥锁 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。 13.1 Lock 与 ReentrantLock Lock 中实 阅读全文
摘要:
6.1 在线程中执行任务 围绕任务执\执行设计应用程序结构 .讲一个复杂的功能分解为多个独立的任务. 并可以并行执行, 在调度和负载均衡过程中实现更高的灵活性. 6.1.1 串行的执行任务 在单个线程中串行的执行各项任务. 6.1.2 显示的创建任务 正常负载情况下, 为每个任务分配一个线程可以提升 阅读全文
摘要:
5.1 同步容器类 实现方式 : 将他们的状态封装起来,并对每个公有方法都进行同步, 使得每次只有一个线程可以访问. 5.1.1 存在的问题 复合操作 并非线程安全. 比如 迭代, 条件运算等. 在对同步容器类的复合操作加锁时一定要以容器对象为锁对象, 保证复合操作的锁对象和容器使用的锁对象一致.才 阅读全文