码迷,mamicode.com
首页 > 其他好文 > 详细

并发与并行的区别

时间:2018-10-28 16:17:12      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:class   影响   简单   性能   oid   多个   alt   提高   安全   

并行

同一时刻可以处理多个任务 
两个并行执行的任务如下图 
技术分享图片

并发

同一时刻只能处理一个任务,但一个时间段内可以对多个任务交替处理 

并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈


两个并发执行的任务如下图 
技术分享图片

打个比喻

两个人在喂两个孩子吃饭,这叫并行,因为是同时进行的 
如果是一个人喂两个孩子吃饭,轮流着每人喂一口,这叫并发,因为是交替进行

 

线程安全和同步

  • 线程安全:经常用来描绘一段代码。指在并发的情况之下,该代码经过多线程使用,线程的调度顺序不影响任何结果。这个时候使用多线程,我们只需要关注系统的内存,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

并发与并行的区别

标签:class   影响   简单   性能   oid   多个   alt   提高   安全   

原文地址:https://www.cnblogs.com/benbencyb/p/9865525.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!