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

线程基本概念

时间:2023-02-05 11:33:31浏览次数:42  
标签:主线 ID 并发 线程 进程 基本概念 运行

一、线程的概念

1.什么是线程?

  线程是参与系统调度的最小单位。它被包含在进程中,是进程中的实际运行单位。一个线程指的是进程中一个单一顺序的控制流(或者说是执行路线、执行流),一个进程中可以创建多个线程,多个线程实现并发运行,每个线程执行不同的任务。

2.线程是如何被创建的?

  当一个程序启动时,就有一个进程被操作系统(OS)创建,与此同时一个线程也立刻运行,该线程通常叫作程序的主线程(Main Thread)

  任何一个进程都包含一个主线程,只有主线程的进程称为单线程进程。除了主线程之外,还包含其它的线程的进程为多线程进程其它的线程通常由主线程创建,也称为主线程的子线程。所以主线程通常会在最后结束运行,执行各种清理工作(如为子线程收尸)。

3.线程的特点
  (1)线程程序运行的基本单位。线程不单独存在,而是包含在进程中。进程不能运行,真正运行的是进程中的线程

  (2)同一个进程中的多个线程共享该进程中的全部系统资源,如文件描述符,虚拟地址空间和信号处理等。此外,这些线程都有各自的调用栈(call stack,线程栈),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage).

4.在并发处理多任务时,为何选择多线程而不是多进程?

  所谓并发就是交替运行,多进程编程,进程间的切换开销大,通信麻烦且速度慢。

5.线程ID

  每个线程也有其对应的标识,称为线程 ID。与进程相比,进程 ID 在整个系统中是唯一的,但线程 ID 不同,线程 ID 只有在它所属的进程上下文中才有意义。

标签:主线,ID,并发,线程,进程,基本概念,运行
From: https://www.cnblogs.com/DongdongAa/p/17093071.html

相关文章

  • 探秘多线程-闭锁、栅栏与异步编排
    无论是项目开发还是开源代码阅读,多线程都是不可或缺的一个重要知识点,基于这个考量,于是总结出本篇文章,讨论闭锁(CountDownLatch)、栅栏(CyclicBarrier)与异步编排(CompletableF......
  • Java多线程01——多线程的创建
    1进程和线程进程:进程是并发执行程序在执行过程中,资源分配和管理的基本单位。进程可以理解为一个应用程序的执行过程,应用程序一旦执行,就是一个进程。线程:线程是进程的一个执......
  • 线程池调优
    线程池调优主要包括两方面线程数调优BlockingQueue调优线程数调优一般根据任务类型进行调优。增删改查类任务一般属于IO密集型任务,但大部分任务都属于混合型任务......
  • Java 多线程学习
    Java多线程学习Thread类学习首先使类继承Thread然后创建run方法其中在线程中run主要是线程执行体在线程中new这个类然后使用start进行线程打开注:线程中是同......
  • Java多线程并发04—线程池的合理使用
    为什么使用线程池?线程池做的工作主要是控制运行的线程的数量。线程池的种类Java中常用的线程池主要有四种:newCachedThreadPool、newFixedThreadPool、newScheduledThreadPo......
  • Java多线程并发05-锁说明
    根据锁的各种特性,可将锁分为以下几类:乐观锁/悲观锁独享锁(互斥锁)/共享锁(读写锁)可重入锁公平锁/非公平锁分段锁偏向锁/轻量级锁/重量级锁自旋锁乐观锁/悲观锁乐观锁与悲观锁并......
  • mongdb基本概念介绍
    我们通过与关系型数据库的比较来说明MongoDB中的一些概念。SQLMongoDBdatabasedatabasetable(表)collection(集合)row(行)document(文档)column(列)field......
  • 线程变量-cnblog
    1.3.2ThreadLocalThreadLocal并不是一个Thread,而是Thread的局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程......
  • 常见网络模型/线程模型
    1.连接独占线程或进程在这个模型中,线程/进程处理来自绑定连接的消息,在连接断开前不退也不做其他事情。当连接数逐渐增多时,线程/进程占用的资源和上下文切换成本会越来越大......
  • Java基于枚举类的线程池
    线程池定义(可防序列化攻击)packagecom.yang.utils;importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.ThreadPoolExecutor;importjava......