3.4.3. HashTable
(线程安全)
.....................................................53
3.4.4. TreeMap
(可排序)
.........................................................5 3
3.4.5. LinkHashMap
(记录插入顺序)
...............................................53
4. JAVA 多线程并发 .......................................................................54
4.1.1. JAVA
并发知识库
...........................................................54
4.1.2. JAVA
线程实现
/
创建方式
.....................................................5 4
4.1.2.1. 继承 Thread 类.....................................................................54
4.1.2.2. 实现 Runnable 接口。................................................................54
4.1.2.3. ExecutorService、Callable<Class>、Future 有返回值线程...............................55
4.1.2.4. 基于线程池的方式 ..................................................................56
4.1.3. 4
种线程池
.................................................................5 6
4.1.3.1. newCachedThreadPool ..............................................................................................................57
4.1.3.2. newFixedThreadPool .................................................................................................................57
4.1.3.3. newScheduledThreadPool..........................................................................................................58
4.1.3.4. newSingleThreadExecutor ......................................................................................................................58
4.1.4.
线程生命周期
(
状态
)...............................................................................................................58
4.1.4.1. 新建状态(NEW) .................................................................58
4.1.4.2. 就绪状态(RUNNABLE): .........................................................59
4.1.4.3. 运行状态(RUNNING): ..........................................................59
4.1.4.4. 阻塞状态(BLOCKED): ..........................................................59
等待阻塞(o.wait->等待对列): ...........................................................59
同步阻塞(lock->锁池) .............................................................................................................................59
其他阻塞(sleep/join) ...............................................................................................................................59
4.1.4.5. 线程死亡(DEAD) ................................................................59
正常结束.................................................................................59
异常结束.................................................................................59
调用 stop ................................................................................................................................................59
4.1.5.
终止线程
4
种方式
...........................................................6 0
4.1.5.1. 正常运行结束 ......................................................................60
4.1.5.2. 使用退出标志退出线程 ..............................................................60
4.1.5.3. Interrupt 方法结束线程 ..............................................................60
4.1.5.4. stop 方法终止线程(线程不安全) ....................................................61
4.1.6. sleep
与
wait
区别
...........................................................6 1
4.1.7. start
与
run
区别
.............................................................6 2
4.1.8. JAVA
后台线程
.............................................................6 2
4.1.9. JAVA
锁
...................................................................63
4.1.9.1. 乐观锁 ...........................................................................63
4.1.9.2. 悲观锁 ...........................................................................63
4.1.9.3. 自旋锁 ...........................................................................63
自旋锁的优缺点...........................................................................63
自旋锁时间阈值(1.6 引入了适应性自旋锁) .................................................63
自旋锁的开启.............................................................................64
4.1.9.4. Synchronized 同步锁 ...............................................................64
Synchronized 作用范围 ....................................................................64
Synchronized 核心组件 ....................................................................64
Synchronized 实现 ........................................................................64
4.1.9.5. ReentrantLock.............................................................................................................................66
Lock 接口的主要方法 ......................................................................66
非公平锁.................................................................................66
公平锁...................................................................................67
ReentrantLock 与 synchronized .............................................................................................................67
ReentrantLock 实现 .......................................................................67
Condition 类和 Object 类锁方法区别区别 .....................................................68
tryLock 和 lock 和 lockInterruptibly
的区别 ....................................................68
4.1.9.6. Semaphore 信号量 .................................................................68
实现互斥锁(计数器为 1) .................................................................68
代码实现.................................................................................68
Semaphore 与 ReentrantLock ...............................................................................................................69
4.1.9.7.
AtomicInteger..............................................................................................................................69