什么是线程
是进程中的单个顺序控制流,是一条执行路径
一个程序只有一条执行路径就是单线程程序,一个程序有多条执行路径就是多线程程序
创建线程
继承thread类
重写run方法,封装被线程执行的代码,创建thread类的对象,调用start方法
run方法和start方法的区别:run方法直接调用,相当于普通方法的调用,start方法启动线程,由jvm调用run方法
设置和获取线程名称:setname方法,getname方法
设置和获取线程优先级:setPrioroty方法,getPriority方法
实现runnable方法
线程池
newCachedThreadPool() 可缓存
newFixedThreadPool() 可指定大小
newScheduledThreadPool() 可以控制时间和周期
newSingleThreadPool() 单个线程
参数
corePoolSize核心线程池大小:最小线程数量,即使空闲也不会被销毁
maximumPoolSize线程池最大线程数量:任务被提交到线程池以后,首先会找有没有空闲线程,如果没有则缓存到工作队列,工作队列满了则创建新新线程,不能超过线程最大数量,把队头任务交给新线程,把这个任务放到队尾
keepAliveTime空闲线程存活时间:线程空闲,且数量大于corePoolSize,则指定时间后被销毁
unit:keepAliveTime的计量单位
workQueue工作队列:新任务被提交时,如果没有空闲线程,先进入工作队列队尾
锁/同步
synchronize关键字
发生异常自动解锁,不会发生死锁,
不能响应中断
竞争不激烈性能好
lock接口
发生异常不会自动解锁,需要手动解锁
可以用interrupt来响应中断
竞争激烈性能好
浙公网安备 33010602011771号