线程池的理解
线程
线程一出生就被编了一个号[如:0X623],系统开辟一块 内存空间,叫做线程池,将新生成的线程存入线程池中等待执行命令;
- 每个
线程在离开线程池之前都会被赋予任务【处理包裹】;
- 然后就被放到
就绪车间【另一块内存空间】,等待CPU的召唤;
- 线程的优先级越高,就越早进入
运行车间【获得一片cpu运行时,获取计算机的全部资源,有权利调配硬盘,文件系统,数据库,网卡,内存等资源】;
- 进入
运行车间后,线程根据包裹操作步骤,按顺序的完成操作(比如请求登录)。
- 如果
线程发出指令后,需要等待返回响应数据,这里需要时间,此时线程进入休闲状态(这时CPU通知该线程,记住你正在执行的步骤,然后买上带着你的包裹离开);
线程带着包裹来到了等待车间,等待其他资源的响应之后再执行后续操作。
如果线程的cpu执行片段超时,就重新进入就绪车间等待CPU召唤;不断反复直到处理完包裹[包裹里的清单按步骤执行完];
- 当前
线程将重新进入线程池中等待下一个任务。
- 碰到重要的任务时,应该对所操作资源进行
加锁,避免脏数据产生。
- 如果两个线程互相竞争资源,势必将产生
死锁,大量消耗计算机资源。这时候操作系统就会出面调解,并选择kill掉其中一个线程。
- 计算锁对象的权重,权重高的将优先获得锁并完成执行任务。