1.创建线程的两种方法
继承Thread类,实现Runnable方法
2.线程六种状态
1.当新建一个线程,他是New状态
2.调用线程的start方法会进入Runnable
3.Blocked(阻塞)
4.Waiting(等待)
5.Timed Waiting
6.Terminated
3.线程终止常见的三种方法
1.stop() 现在已经被弃用了 。(线程不安全)
2.interrupt()推荐使用这种方式(线程安全,会抛出一个异常)
3.while 通过标志位来结束循环运行
4.线程通信的方式
1.文件共享
2.网络共享
3.共享变量
jdk提供了一些线程协调相关的API:
suspend/resume(有先后顺序,suspend不会释放锁)
wait/notify(有先后顺序,wait会释放锁)
park/unpark(没有先后顺序,不会释放锁)
5.线程封闭的两种方式
ThreadLocal和局部变量(栈封闭)
6.线程池相关参数解释
工作线程:线程池中的线程,在没有任务的时候处于等待状态,可以循环地执行任务。
任务队列:用于存放没有处理的任务,提供一种缓冲机制(超出核心线程数的线程放入任务队列)。
核心线程数:线程池的基本大小,只有在任务队列满了才会创建超出这个数量的线程。
最大线程数:超出任务队列的线程才会使用最大线程数,如果总线程数(除去任务队列)超过了最大线程数就会抛异常。
类型 | 名称 | 描述 |
---|---|---|
接口 | Excutor | 最上层的接口,定义了执行任务的方法execute |
接口 | ExcutorService | 继承Excutor接口,拓展Callable,Future,关闭方法 |
接口 | ScheduleExcutorService | 继承ExcutorSevice接口,增加了添加任务相关方法 |
接口 | ScheduleThreadPoolExcutor | 集成ThreadPoolExcutor,实现了ScheduleExcutorService中相关定时任务的方法 |