并发与并行的区别
Posted benbencyb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发与并行的区别相关的知识,希望对你有一定的参考价值。
并行
同一时刻可以处理多个任务
两个并行执行的任务如下图
并发
同一时刻只能处理一个任务,但一个时间段内可以对多个任务交替处理
并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈
两个并发执行的任务如下图
打个比喻
两个人在喂两个孩子吃饭,这叫并行,因为是同时进行的
如果是一个人喂两个孩子吃饭,轮流着每人喂一口,这叫并发,因为是交替进行
线程安全和同步
- 线程安全:经常用来描绘一段代码。指在并发的情况之下,该代码经过多线程使用,线程的调度顺序不影响任何结果。这个时候使用多线程,我们只需要关注系统的内存,cpu是不是够用即可。反过来,线程不安全就意味着线程的调度顺序会影响最终结果,如不加事务的转账代码:
void transferMoney(User from, User to, float amount){ to.setMoney(to.getBalance() + amount); from.setMoney(from.getBalance() - amount); }
- 同步:Java中的同步指的是通过人为的控制和调度,保证共享资源的多线程访问成为线程安全,来保证结果的准确。如上面的代码简单加入
@synchronized
关键字。在保证结果准确的同时,提高性能,才是优秀的程序。线程安全的优先级高于性能。
参考:https://blog.csdn.net/zhao18933/article/details/46699931
以上是关于并发与并行的区别的主要内容,如果未能解决你的问题,请参考以下文章