复习Java多线程基础知识时做的笔记,就当做是以后再次学习时的一种索引。
1、 基础知识
1) 两种多任务实现方式:抢占式与非抢占式
2) 什么是多线程?多线程与多进程的区别。(资源共享、)
3) 多线程实现:extends Thread or implements Runnable,覆盖run方法,通过start启动
4) 中断线程。 Interrupt()与 isInterrupted()的区别,前者用来中断线程,后者判断线程是否被中断
5) 线程状态:New、Runnable、Blocked、Dead四种,理解状态间转换的情况。比如什么情况下会进入阻塞状态,什么情况下会由阻塞状态切换到运行状态,什么情况下的线程是死的。
6) 线程优先级,守护线程,线程组以及线程异常处理
2、 线程同步
1) 明白竞争条件的概念,如何对存取进行同步
2) 锁对象与同步关键字:ReentrantLock VS Synchronized,同步块
3) 临界区的概念与注意点
4) 扩展知识点:多线程监视器
5) Volatile关键字作用,特性及不足
6) 死锁定义,如果避免死锁。用tryLock()测试锁超时。读写锁的用法与功能。
7) Stop方法与suspend方法使用时存在的隐藏,不建议使用这两个方法。
3、 多线程集合类
1) 阻塞队列,功能、扩展及常用操作
2) Callable与runnable比较, callable与future结合使用,FutureTask作用。
3) 执行器 Executor。为什么需要线程池?线程的预定执行,如何控制线程组。
4) 同步器:synchronizer、障栅、倒计时门栓、交换器、同步队列、信号量,明白这些对象的功能、使用时机、使用方法及使用注意点。