美文网首页并发编程
并发编程基础

并发编程基础

作者: xiaolyuh | 来源:发表于2019-03-18 19:48 被阅读38次

CPU时间片轮转机制

CPU时间片轮转机制也称时间片轮转法(Round-Robin,RR)主要用于分时系统中的进程调度。时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。每个进程被分配一时间段,称作它的时间片,即该进程允许运行的时间。

进程之间的切换会产生上下文切花,每次切换需要耗费5000到2W个时钟周期。所有我们在进行并发编程的过程中因该尽量减少上下文的切换。

怎样减少上下文的切换

  • 无锁并发编程:多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁。
  • CAS算法:Java的Atomic包使用CAS算法来更新数据,而不需要加锁。
  • 使用最少线程: 避免创建不需要的线程,比如任务很少,但是创建了很多线程来处理,这样会造成大量线程都处于等待状态。
  • 协程:在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。

进程和线程

进程是程序运行资源分配的最小单位,进程内部可以有多个线程,线程之间会共享进程分配到的资源。
线程是CPU调度的最小单位,它不能单独存在,必须依附于进程。

打个比方,打开一个QQ应用是以进程,QQ里面的多个聊天窗口是线程。

并行和并发

并行同一时刻可以同时处理事情的能力,如CPU有一个核,那么并行度就是多少。
并发单位时间内可以处理事情的能力,如QPS。

并行强调的是同一时刻,而并发强调的是一个时间段

使用并发编程的优缺点

优点:充分利用系统资源。
缺点:线程间对共享资源的访问存在竞争;线程太多就产生大量的上下文切换,造成系统资源的浪费;增加系统发杂度。

相关文章

  • java并发线程的基础

    Java并发系列之java并发编程基础

  • Java并发编程基础之并发包源码剖析(书籍目录)

    并发编程是Java编程的核心领域,而Java并发包则凝聚了并发编程的精华,掌握并发编程基础,熟练应用,理解思想则显...

  • 面试大纲

    基础算法 排序 查找 动态规划 并发编程 复习资料 《java并发编程的艺术》 https://redspider...

  • Java并发编程知识点梳理

    一 并发编程基础知识 1.1 概念 并发编程是你编写的代码有可能在多线程环境中执行, 1.2 为什么要用并发编程...

  • 精通Java并发 - 线程池

    0. 前言 为什么需要学习并发编程? Tomcat、Netty等框架源码,需要并发编程基础才能看懂;并发也是Jav...

  • 并发 - 并发编程基础

    一、概述 一个Java程序也是一个多线程程序。JVM 启动的[5] Attach Listener ...

  • 清华大牛出版的java并发编程从入门到精通,不要让它继续蒙灰了

    内容简介 本书作者结合自己10多年Java并发编程经验,详细介绍了Java 并发编程的基础概念。工作原理。编程技巧...

  • Go 基础

    基础 [TOC] 特性 Go 并发编程采用CSP模型不需要锁,不需要callback并发编程 vs 并行计算 安装...

  • 并发编程基础

    几个基本概念 同步&异步同步(Synchronous)同步方法一旦调用必须等待方法调用返回后才会继续后续行动异步(...

  • 并发编程基础

    并发1、同时拥有两个或多个线程,如果程序在单核处理器上运行,多个线程交替地换入或者换出内存,这些线程是同时存在的,...

网友评论

    本文标题:并发编程基础

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