天天看点

关于“并发”、“并行”、“串行”的一点理解

1.并发:

        指同一时间点可能有多个线程同时做同一件事情,例如抢票,商品秒杀等(多个线程会同时操作库存这个资源),这种情况下需要考虑被抢占的资源的安全性问题,即线程安全问题。(多个线程对应同一个资源)

2.并行:

        指同一时间点可能有多个线程同时做不同事情,比如文件压缩等(把整个文件按容量平分为4份,4个线程分别压缩其中一份,都处理完成后再汇总成一个压缩文件),各个线程所需要的资源并不相同,所以不会造成线程安全问题。(多个线程对应不同资源)

3.串行:

        指同一时间点只有单个线程做一件事情,例如我们对某一个资源加锁后,并发环境下对这个资源的操作就相当于时串行执行了,因为同一个时间点内只有一个线程能获得资源的锁,其他的线程只能等待,悲观锁解决线程安全问题的思路就是把一个并发问题转换成一个串行的问题。(单个线程对应同一个资源)

4.注意点:

        不同的线程并不等同于不同的CPU核心,这点不要混淆!

继续阅读