ThreadLocal
threadlocal是一个线程内部的存储类,可以在线程内指定存储数据,只有指定线程可以得到存储数据,大致意思就是ThreadLocal提供了线程内存储变量的能力,每一个相处对应的变量是相互独立的,通过get和set方法可以得到当前线程对应的值。
用个不太恰当的例子比喻,从表面上看threadlocal相当于维护了一个map,key就是当前线程,value就是需要存储的对象。
但这个比如也是不恰当的,实际上ThreadLocal静态内部类ThreadLocalMap为每个thread都维护了一个数据table,threadLocal确定了一个数据下标,而这个下标就是value存储的位置
线程的状态
新建、就绪、运行、阻塞、死亡
线程的实现方式
其它六个参数很好理解,就记住这个threadfactory
1、首先是有个默认的corepoolsize,今日当值的人数,当达到这个默认值时,继续进来线程,则会进入阻塞队列中,等待叫号,如果corepoolsize今日当值和阻塞队列worequeu都满了,再进来线程人员,则会开通maximumpoolsize最大执行线程数,但如果线程人员进行进去,最大的满了,队列也满了,则会启动拒绝策略。
CallerRunsPolicy:回退到调用者,谁调用则返回给谁
DiscardOldestPolicy:
corepoolsize大不了就用默认的0,懒加载思想,阻塞队列必须设置一个初始值,不然他的默认值为Integer.Max21亿之多
maximumpoolsize实际生产中参数设置多少???:
查看系统的线程数几核的