zoukankan      html  css  js  c++  java
  • 并发与并行的区别

    并行

    同一时刻可以处理多个任务 
    两个并行执行的任务如下图 
    这里写图片描述

    并发

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

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


    两个并发执行的任务如下图 
    这里写图片描述

    打个比喻

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

    线程安全和同步

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

  • 相关阅读:
    闲谈:价值、服务、时间、用户体验、美、过度开发
    笔记:Sublime Text 3
    快速切换目录命令go
    miniPy for CentOS 5/6
    用Fabric实现小批量的自动化上线
    异步多线程C/S框架gko_pool
    Reboot分享第三期(已结束)
    Reboot分享第二期(已结束)
    Reboot分享第一期(已结束)
    iptables从入门到精通
  • 原文地址:https://www.cnblogs.com/benbencyb/p/9865525.html
Copyright © 2011-2022 走看看