多线程编程

并行基础

访问次数: 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))
应用场景
单机多核场景下加速计算密集任务,同时保证共享数据结构不被并发破坏。