首页 > 其他分享 > 第十四章《多线程》第1节:线程基本原理

第十四章《多线程》第1节:线程基本原理

时间:2023-01-02 17:34:00浏览次数:62  
标签:工程队 执行 并发 小队 进程 线程 第十四章 多线程

​计算机上可以运行程序,每一个正在运行着的程序都被称为“进程”,每个进程都拥有独立的系统资源以及地址空间,在没有进程允许的情况下,另一个用户进程不能访问这个进程的地址空间。进程可以同时执行,这个特性被称为“并发”。很多读者不理解为什么计算机在只有一个CPU的情况下能够让多个进程并发执行,这是因为CPU能够在多个进程之间轮换执行,因为执行进程的速度非常快,并且在各进程之间的切换速度也非常快,所以导致用户感觉到这些进程是同时执行的。

线程是进程的组成部分,一个进程中可以包含多个线程,每个线程负责完成一个支线任务,多个线程也可以并发执行。我们可以用一个形象的例子来描述进程和线程的关系:一个正在施工的筑工程队就相当于一个进程,这个工程队有一个总体任务:修建楼房。工程队内部又可以分为多个小队,每个小队负责的工作不一样,有的小队负责运输建筑材料,有的小队负责搅拌水泥,有的小队负责砌砖,还有的小队负责给工人做饭,工程队的中的每一个小队都相当于一个线程,各小队都有自己独立的任务,并且能同时工作。从这个比喻可以看出:线程和进程的关系就是局部与整体的关系,但是需要注意:线程并不独立拥有资源,每个线程都与同一进程下的其他线程共享整个进程的资源。正因为同一进程下的多个线程是共享资源的,所以在开发过程中必须小心,不能让一个线程在享用资源时妨碍其他线程。线程的并发执行也是通过CPU在各线程间轮换执行来实现的,但相较于进程之间的切换,线程的切换速度会快的多。​

每当一个程序开始运行时,系统就会创建一个进程,并且同时在这个进程下创建一个主线程。主线程可以根据需要再创建出其他线程,这些线程被称为“子线程”。主线程和子线程是相互独立的,也就是说:主线程执行结束后,子线程依然可以执行,但通常情况下我们都会让主线程最后结束执行。​

多个线程同时执行能够让程序的执行效率更高,例如在使用QQ聊天软件时,可以在发送消息的过程中同时接收对方传过来的文件,发送消息和接收文件实际上就是由两个线程来完成的,由于线程具有良好的并发性,所以不会出现在发送消息时接收文件任务暂时停止的现象。

本文字版教程还配有更详细的视频讲解,小伙伴们可以点击这里观看。

标签:工程队,执行,并发,小队,进程,线程,第十四章,多线程
From: https://blog.51cto.com/mugexuetang/5983879

相关文章

  • 第十四章《多线程》第2节:线程的生命周期
    ​线程在被创建后会经历多个状态最后直至死亡,这个过程称为线程的“生命周期”。生命周期中包含很多状态,这些状态有:新生、就绪、运行、阻塞和死亡。线程有可能在几种状态之间......
  • 第十四章《多线程》第3节:创建线程
    ​Java语言中有一个专门表示线程的Thread类,这个类位于java.lang包下,因此在使用这个类时无需引入。Thread的方法定义了线程的基本操作,下面的表14-1展示了Thread类所定义的方......
  • java多线程
    1、线程:进程想要执行任务就需要依赖线程。换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。 线程不能独立存在,必须依赖进程,在进程中运行每一个进......
  • 静态方法如何调用非静态方法,创建线程的方式
    在静态方法中,new一个类对象,用类对象调用非静态方法第一种方式创建线程publicclassMain{  privateclassMyRunimplementsRunnable{    publicvoid......
  • C#开发的线程池和管理器 - 开源研究系列文章
          上次编写了一个小软件,用于练手及自己的一个小工具集合。今天把其中的线程池和管理器的代码抽取出来,写成一个博文,让需要的朋友能够进行学习和应用。    ......
  • 1.走近Java世界中的线程
    一.基本概念 进程是程序运行的实例。 进程是程序向操作系统申请资源(如内存空间和文件句柄)的基本单位。线程是进程中可独立执行的最小单位。 一个进程中可以包含多个......
  • 04.关于线程你必须知道的8个问题(下)
    今天我们来学习线程中最后4个问题:线程的同步与互斥线程的本质与调度死锁的产生与解决多线程的是与非通过本篇文章,你可以了解到计算机中经典的同步机制--管程,Java线......
  • Python之路【第七篇】:线程、进程和协程
    1.Python线程Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。#!/usr/bin/envpython#-*-coding:utf-8-*-importthreadingimporttime......
  • 网络程序设计 实验3 多人聊天室 流式套接字 多线程编程
    实验3多人聊天室实验目的:通过流式套接字编程,及多线程编程,实现简单的多人聊天室。开发语言与工具:VC实验要求:1.使用MFC编程。2.利用流式套接字编程及多线程编程。3......
  • Linux线程控制
    写在前面我们今天来看线程的知识点,这个博客的内容很多,主要就是为了我们后面的网络做铺垫,最关键的是相比较于进程而言,线程是更加优秀的,我们现在的计算机大多采用的就是线程.......