线程与线程池基本理解
1. 用多线程的目的是什么?
充分利用cpu资源,并发做多件事
2.线程什么时候会让出cpu
阻塞时 wait ()
sleep
3.线程是什么
一条代码执行流,完成一组代码的执行
这一组代码,称为一个任务
4.cpu的工作是什么
执行代码
流程:任务----装入--->线程----运送---->cpu(执行代码)
5.线程是不是越多越好
(1)每一个线程需要以一个操作系统来支持, 创建线程时间+销毁时间 > 执行任务时间,则不合算
(2)线程占用堆空间,操作系统占用系统内存,一个线程默认最大栈大小时1m,需要从系统内存中分配,线程过多会造成内存不足
(3)操作系统需要频繁切换线程上下文,影响性能
6.如何正确使用多线程
多线程目的:成分利用cpu并发做事
线程的本质:将代码送给cpu执行
用合适数量的卡车不断运送代码即可
这合适数量的线程就构成了线程池
有任务要执行时,将他放入线程池中。池中的一个线程将任务送给cpu执行
线程池原理
接受任务 ,放入仓库
工作线程从仓库取任务,执行
仓库为空时,线程进入阻塞状态
任务用什么表示
runnable 普通的小汽车,负责将任务送到cpu处理
callable 赛车(观察者模式)
仓库用什么
blockingqueue 阻塞队列 ,线程安全的
在队列为空时的获取阻塞,在队列满时放入阻塞