1.线程和进程的区别
线程:线程是cpu执行进程时,所执行程序的内部路径。
进程:进程是程序一次执行的过程,进程有着自己的生命周期,进程是由线程组成了。
2.线程的启动
在java里启动线程有四种方式:
1.继承Thread类,并重写run()方法。
2.重写runnable方法,并重写run()方法。
3.实现callable接口,重写call()方法
4.使用线程池execute,尽量不要使用execute 使用ThreadPoolExecutor
三大线程池
定长线程池FixedThreadPool
缓冲线程池CachedThreadPool
定时线程池ScheduledThreadPool
单线程线程池 SingleThreadExecutor
默认线程池 ThreadPoolExecutor
7大参数
核心线程 最大线程数 堵塞队列 线程工厂 存活时间 时间单位 拒绝策略
拒绝策略:有四种
1.当队列满了,不处理,直接抛出异常
2.从哪里的来的线程,就返回到那个线程
3.队列满了,不会抛出异常
4.队列满了,尝试和最早的竞争,不会抛出异常
线程池的大小应该怎么去设置?
IO密集度:网络、磁盘IO都是IO密集型任务,IO就是指把内容从硬盘读到内存的过程,或者从网络接收信息到本机内存的过程,不占用cpu
cpu密集型:要进行大量的计算,消耗cpu资源,全靠cpu的运算能力。
线程池的好处:
1.降低资源的消耗
2.提高响应的速度
3.方便管理