并发与并行的区别

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






以上是关于并发与并行的区别的主要内容,如果未能解决你的问题,请参考以下文章

并发与并行的区别

并发与并行的区别

在JAVA中并行和并发机制的区别?

并发与并行的区别

并发与并行的区别---python

并发与并行的区别