1、线程上下文切换:任务从保存到再加载的过程就是一次上线文切换,线程上下文切换是需要开销的。
2、引起线程上下文切换的原因:
a、当前线程cpu时间片消耗完
b、资源竞争没有获取到资源,例如线程没有获取锁时,线程挂起
c、当前线程发生io阻塞,线程挂起,cpu调度下一个线程
d、当前线程出让cpu,线程调用yield方法
3、避免线程上下文切换的措施:
a、无锁编程,使用cas代替锁的使用
b、使用最少线程
4、并发编程的挑战:
a、线程上下文的切换
b、死锁
c、硬件和软件资源的限制
5、死锁引发的根本原因:资源的不足,导致在对资源使用的时候发生竞争
5.1、如何编写死锁程序:
两个资源A、B,启动两个线程t1、t2,同时去获取两个资源,但是两者获取的顺序相反,因此在这个时候会发生资源的竞争,导致彼此互相等待死锁
5.2、解决死锁的思路:
两个资源要么都获取,要不都不获取
6、资源限制:是指程序的执行速度受限于计算机的硬件和软件的资源。硬件资源有:带宽、磁盘的读写速度和cpu的处理速度;软件资源有:数据库的连接数和socket连接数。
6.1、资源限制的解决思路:
硬件:对于硬件资源的限制的话只能是加机器,使用集群的方式来解决问题
软件:对于软件资源的限制的话可以使用连接池的方式
网友评论