多线程编程
并行基础
访问次数: 17
从串行到并行:通过任务/数据分解挖掘并发性,用线程、线程池、锁与信号量安全访问共享资源,并处理竞态与死锁。
视频教程
类图
flowchart TB
Serial[串行算法] --> Find[寻找并发性]
Find --> TD[任务分解]
Find --> DD[数据分解]
TD --> Map[映射到线程/线程池]
DD --> Map
Map --> Sync[锁 / 信号量 / 互斥]
Sync --> Safe[安全并发执行]
源代码示例
ExecutorService pool = Executors.newFixedThreadPool(4);
CountDownLatch done = new CountDownLatch(tasks.length);
for (Runnable t : tasks) {
pool.submit(() -> { try { t.run(); } finally { done.countDown(); } });
}
done.await(); pool.shutdown();
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=4) as pool:
list(pool.map(work, chunks))
应用场景
单机多核场景下加速计算密集任务,同时保证共享数据结构不被并发破坏。