1 、线程的创建
有两种方法,继承Thread类和实现Runnable或Callable接口
2、线程的操作
- join线程:等待被join线程执行完毕
- 后台线程:为其他的线程提供服务
- 线程睡眠:进入阻塞状态
- yield:让当前线程让步,让系统的线程调度器重新调度一下
3、线程池
- ExecutorService
对应的任务可以是实现Runnable接口或Callable接口。 - CompletionService
对应的任务可以是实现Runnable接口或Callable接口。与ExecutorService相比,可以分别获取线程的返回值 - ForkJoinPool
对应的任务是ForkJoinTask,分别有两个实现类,RecursiveTask和RecursiveAction。其中前者代表有返回值,后者代表无返回值
4、线程同步
线程同步解决多个线程同时执行,对同一资源的访问问题
- 同步监视器
Synchronized同步块
synchronized同步方法
- 同步锁
lock
5、线程通信
线程通信用于不同线程之间的调度
- 传统方法,使用Object的wait()、nofify()、nofityAll()
- 使用lock锁对应的Condition控制线程通信,对应方法有await()、nofity()、nofifyAll()
- 使用BlockingQueue阻塞队列控制线程通信,put(E e),take()