01 引入
辩证
多线程不一定比串行执行快,需要考虑线程创建和上下文切换的损失。
减少上下文切换
- 无锁并发编程,如使用 Hash 算法将数据分段,供不同线程处理。
- CAS 算法。
- 使用尽可能少的线程,避免创建过多线程导致大多处于等待态。
- 协程,在单线程里实现多任务调度,并维持多任务间切换。
资源限制问题
- 硬件资源限制,考虑集群并行执行程序。
- 软件资源限制,考虑资源池复用资源,如使用连接池复用数据库连接。
Select a result to preview
多线程不一定比串行执行快,需要考虑线程创建和上下文切换的损失。