首页 > 其他分享 >线程基本概念

线程基本概念

时间:2024-05-08 11:37:33浏览次数:20  
标签:多个 CPU 任务 线程 进程 执行 基本概念

1.进程与线程
1.1 进程
 进程是资源分配的单位,系统在运行时会为每个进程分配不同的内存区域
1.2 线程
  线程是调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(pc),线程切换的开销小。
一个Java应用程序java.exe,其实至少有三个线程:main()主线程(受异常影响),gc()垃圾回收线程,异常处理线程。

 进程是程序的一次执行过程,或是正在运行的一个程序

 一个进程中的多个线程共享相同的内存单元/内存地址空间。它们从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便、高效。但多个线程操作共享的系统资源可能就会带来安全的隐患。

2.单核CPU与多核CPU
  单核CPU,是一种假的多线程,因为在一个时间单元内,也只能执行一个线程的任务。Windows这种操作系统是把CPU的时间划分成长短基本相同的时间区间,即”时间片”,通过操作系统的管理(操作系统的时间片分时调度),把这些时间片依次轮流地分配给各个应用使用,CPU是在多个进程之间来回切换执行的。
  举个例子:收费站只有收了费才能通过。此时有多个车道,但只有一个工作人员在收费。那么CPU就好比收费人员。如果有某个人磨磨蹭蹭不想交钱,那么收费人员可以把他“挂起”(晾着他,等他想通了,准备好了钱,再去收费)。但是因为CPU时间单元特别短,因此感觉不出来。
 多核CPU,那就是在一个时间单元内,能真正的同时执行多个线程的任务。就好比有多个收费人员在同时收费。

3.并行与并发
  并行:多个CPU同时执行多个任务,并行的多个任务之间是不互相抢占资源的。比如:多个人同时做不同的事。
  并发:一个CPU(采用时间片)同时执行多个任务,并发的多个任务之间是互相抢占资源的。比如:多个人做同一件事
  在有多个CPU的情况下,才会出现真正意义上的同时进行(即并行)。

 以单核CPU为例,使用单个线程先后完成多个任务(调用多个方法),肯定比用多个线程来完成用的时间更短,为何仍需多线程呢?
 提高程序的效率和响应速度。
 同时执行多个任务、实现一些需要等待的任务时,可以拆分成多个线程同时执行

标签:多个,CPU,任务,线程,进程,执行,基本概念
From: https://www.cnblogs.com/kisssheep/p/18179319

相关文章

  • 几个操作系统的基本概念
    目录四种常见文件系统比较MMU内存管理单元Linux系统内核的作用Linux系统目录和windows系统目录的区别四种常见文件系统比较​四种常见的文件系统分别为FAT16、FAT32、NTFS、ExFAT,存储方式和特性各不相同。我们可以在电脑磁盘,U盘等文件属性看到归属的不同文件系统。以U......
  • C#中的任务和线程
    Singlethread单线程效果,线程卡顿//---------------------------单线程效果---------------------------privatevoidbutton1_Click(objectsender,EventArgse){//总耗时3+5=8秒Thread.Sleep(3000);M......
  • c# 多线程的几种方式 【转载】
    1.什么是线程?进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源。 2.前台线程和后台线程的区别?程序关闭时,后台线程直接关闭,但前台线程会执行完后关闭。通过Thread类新建线程默认为前台线程。其他方式创建的都是后台线程......
  • 线程池(ThreadPoolExecutor)
    线程池核心类ThreadPoolExecutor,通过池化思想来维护线程的创建与消费使用线程池的好处提高任务执行的响应速度,降低资源消耗。任务执行时,直接立即使用线程池提供的线程运行,避免了临时创建线程的CPU/内存开销,达到快速响应的效果。提高线程的可管理性。线程总数可预知,避免用......
  • 线程池核心原理浅析
    前言由于系统资源是有限的,为了降低资源消耗,提高系统的性能和稳定性,引入了线程池对线程进行统一的管理和监控,本文将详细讲解线程池的使用、原理。为什么使用线程池池化思想线程池主要用到了池化思想,池化思想在计算机领域十分常见,主要用于减少资源浪费、提高性能等。池化思想......
  • H.264学习笔记——基本概念
    1.基本概念frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵。field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶场。macroblock/MB:宏块,H.264中处理(预测、变换、量化)的基本单元,大小16*16个像素。slicegroup:条带组,每一帧/场图像中,按照光栅扫面的顺......
  • Java线程基础 - 线程状态
    线程状态转换新建(New)创建后尚未启动,也就是初始状态可运行(Runnable)可能正在运行,也可能正在等待CPU时间片。包含了操作系统线程状态中的Running和Ready。阻塞(Blocking)阻塞状态是指线程因为等待某个条件(通常是I/O操作、获取锁、等待某些资源或者其他同步机制)而暂......
  • FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频
    ​同步播放音视频的时候,《FFmpeg开发实战:从零基础到短视频上线》一书第10章的示例程序playsync.c采取一边遍历一边播放的方式,在源文件的音频流和视频流交错读取的情况下,该方式可以很好地实现同步播放功能。但个别格式的音频流和视频流是分开存储的,前面一大段放了所有的音频帧,后......
  • 通过劫持线程arena实现任意地址分配 n1ctf2018_null
    通过劫持线程arena,当堆开了一个线程之后,如果没有做好保护随之的危险也悄然而至❗BUU上的n1ctf2018_null很好的说明了这个问题题目链接:BUUCTF在线评测(buuoj.cn)看一下保护:除了pie保护剩下的保护全开了,64位ida载入看一下上来是一个输入密码,密码是i'mreadyforchallenge......
  • 【Python】爬虫之多线程
    线程先来理解一下线程的作用,假如有一个工厂,这个工厂里面只有一条生产线,这一条生产线每周可以生产10件产品,像这样的情况就可以理解为单线程。那么问题来了,如果这家工厂收到了一个生产委托,需要在一周之内生产20件产品,这个时候工厂就可以增加一条生产线,提升产能,这个情况就可以理解为......