美文网首页
并发(concurrency)与并行(parallellism)

并发(concurrency)与并行(parallellism)

作者: java高并发 | 来源:发表于2019-01-20 17:26 被阅读106次
  1. 并发与并行的概念
      并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。
      并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QPS来反应这个系统的处理能力。

  2. 并行与并发的异同点
      相似性:都是为了合理且最大化利用系统的资源。
      差异性:并发(concurrency)与并行(parallellism)这两种概念理解起来比较容易混淆,我就在如下进行详细讲解。

        
      如上图所示,并发(concurrency)是指在一个cpu处理的线程中一直不断的切换任务,最终给人的感觉就像同时执行了多个任务。而并行(parallellism)在多个cpu同一时间处理多个任务(在一个cpu中出现不了并行的状态)
  3. 并发(concurrency)与并行(parallellism)的实例
      在简单的传统模式中的生产者及消费者模式中就能体现 并发(concurrency)与并行(parallellism)的实例:

    /**
   * 生产者生产出来的产品交给店员
   */
    public synchronized void produce(){  
     if(this.product >= MAX_PRODUCT){
          try{
              wait();  
              System.out.println("产品已满,请稍候再生产");
          }
          catch(InterruptedException e){
              e.printStackTrace();
          }
          return;
      }
      this.product++;
      System.out.println("生产者生产第" + this.product + "个产品.");
      notifyAll();   //通知等待区的消费者可以取出产品了
}
/**
   * 消费者从店员取产品
   */
  public synchronized void consume()
  {
      if(this.product <= MIN_PRODUCT)
      {
          try 
          {
              wait(); 
              System.out.println("缺货,稍候再取");
          } 
          catch (InterruptedException e) 
          {
              e.printStackTrace();
          }
          return;
      }

      System.out.println("消费者取走了第" + this.product + "个产品.");
      this.product--;
      notifyAll();   //通知等待去的生产者可以生产产品了
  }
在传统的模式中生产者和消费者在同一线程中得意实现就算线程并发(concurrency),如果生产者模式和消费者模式在不同的线程中进行实现,就算做并行(parallellism)。  

相关文章

  • Java面试题(二):多线程

    五、多线程 35. 并行和并发有什么区别? 并发(concurrency)和并行(parallellism)是: ...

  • 并发(concurrency)与并行(parallellism)

    并发与并行的概念  并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。  并发:通过cpu调度算...

  • 并行和并发的区别

    首先要明确,这两者的英文名称也是不一样的。 并行:parallellism 并发:concurrency 一、并行...

  • JS异步编程相关知识点

    并发(concurrency)和并行(parallelism)区别 涉及面试题:并发与并行的区别? 并发是宏观概念...

  • 10.1 并发(concurrency)和并行(parallel

    10.1 并发(concurrency)和并行(parallelism)区别问题一:并发与并行的区别? 异步和这小...

  • 并发简介

    并发基本概念 并发与并行 并发指的是程序的结构,而并行指的是程序运行时的状态。 何谓并发(concurrency)...

  • 异步编程

    并发(concurrency)和并行(parallelism)区别 涉及面试题:并发与并行的区别? 异步和这小节的...

  • 使用 asyncio 包处理并发

    并发与并行(Concurrency、Parallelism) 真正的并行需要多个核心 例如 4 个核心 CPU,最...

  • <>阅读笔记

    第1章 走入并行世界 并发(Concurrency)和并行(Parallenlism)并发:偏重多个任务交替执行,...

  • GCD篇(1)

    GCD的队列有两种,一种是串行队列,一种是并发队列。 并行与并发的区别 并发(concurrency) 并行(pa...

网友评论

      本文标题:并发(concurrency)与并行(parallellism)

      本文链接:https://www.haomeiwen.com/subject/abaxjqtx.html