1.1 上下切换
上下文是贯穿整个系统或阶段生命周期的对象,其中包含了系统全局的一些信息,比如登录之后的用户信息,账号信息,以及在程序每一个阶段运行时的数据。
上下文切换:任务从保存到再加载的过程就是一次上下文切换。
1.2 如果减少上下文切换
1.无锁并发编程。
2.CSA算法
3.使用最少线程
4.协程。
1.3 死锁
交叉锁引起的死锁
1.4 资源限制的挑战
(1)资源限制的挑战
硬件资源限制有带宽的上传/下载速度、硬盘读写速度和CPU的处理速度。软件资源限制有数据库的连接数和socket连接数等。
(2)资源限制引发的问题
如果某段代码并发执行,因为受限与资源,仍然在串行执行,这时候程序不仅不会加快执行,反而会更慢,因为增加了上下文切换和资源调度的时间。
(3)如何解决资源限制的问题
对于硬件资源限制,可以考虑使用集群并行执行程序。比如使用ODPS、Hadoop或者自己搭建服务器集群
对于软件资源限制,可以考虑使用资源池将资源复用。比如使用连接池将数据库和Socket连接复用,或者在调用对方webservice接口获取数据时,只建立一个连接。
(4)在资源限制的情况下进行并发编程
方法就是,根据不同的资源限制调整程序的并发度,比如下载文件程序依赖于两个资源,带宽和硬盘读写速度。
本章总结:
强烈加一多使用JDK并发包提供的并发容易和工具类来解决并发问题,这些类都已经通过了充分的测试和优化。