线程状态
新建:仅仅是个java对象,没有跟真正的线程关联,不会被操作系统分配给CPU;
可运行:执行start()方法后,跟真正的线程关联,被操作系统交给CPU;
死亡:代码执行完毕;
阻塞:未获得锁的线程;
等待:获得锁但是执行了wait()方法
计时等待:获得锁但是执行了wait(long)方法或者是执行了与锁无关的sleep()方法
线程池ThreadPoolExecutor的7个核心参数:
corePoolSize————-核心线程数
maximumPoolSize—-最大线程数
keepAliveTime———-生存时间(针对临时线程)
unit—————————-时间单位(针对临时线程)
workQueue—————任务队列
threadFactory————线程工厂(为线程起名字)
handler———————拒绝策略(AbortPolicy,抛异常;
DiscardPolicy,直接丢弃;
DiscardOldestPolicy,去掉任务队列中等待最久的,将新任务加入任务队列中;
CallerRunsPolicy,调用者线程运行。)
使用顺序:
懒加载核心线程——任务队列——临时线程——拒绝策略