- 浏览: 91470 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- 全文检索 (1)
- java (29)
- xml (2)
- json (2)
- redis springmvc (1)
- Redis (5)
- 开发常识 (1)
- tomcat (2)
- 单元测试Junit (2)
- 设计模式 (2)
- spring (10)
- jvm (2)
- eclipse (4)
- echart (1)
- mybatis (1)
- mysql (3)
- web (1)
- js (2)
- PL/SQL (2)
- 其他 (1)
- 人生 (1)
- 安全 (2)
- jsp (2)
- 硬件电脑 (1)
- linux (3)
- git (10)
- oracle (8)
- ant (1)
- maven (2)
- 正则表达式 (2)
- chrome (1)
- 面试 (6)
- 多线程 (19)
- bug (11)
- java工具类 (3)
- 算法 (1)
- bug,git (1)
- shell (2)
- springmvc (2)
- Java8 (1)
- 消息队列-rocketmq (1)
- es (1)
- dubbo (0)
- spring cloud (0)
- hashmap (0)
- springboot (1)
- velocity (0)
线程
1.引入线程机制的动机和思路
操作系统采用进程机制使得多任务能够并发执行,提高了资源使用率和系统效率。在早期操作系统中,进程是系统进行资源分配的基本单位,也是处理器调度的基本单位,进程在任一时刻只有一个执行控制流,这种结构的进程称为单线程(结构)进程(Single threaded process)。
例如:MS-DOS支持单用户进程,进程是单线程的;传统的UNIX支持多用户进程,每个进程也是单线程的。单线程进程调度时存在进程时空开销大、进程通信代价大、进程并发粒度粗、不适合于并行计算等问题,操作系统引入线程机制来解决这些问题。
线程机制的基本思路是,把进程的两项功能——“独立分配资源”与“被调度分派执行”分离开来,前一项任务仍由进程完成,后一项任务交给称为线程的实体完成。这样,进程作为系统资源分配与保护的独立单位,不需要频繁地切换;线程作为系统调度和分派的基本单位,会被频繁地调度和切换。
2.线程的定义和属性
线程(thread)是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的线程。同一个进程中的所有线程共享进程获得的主存空间和资源,但不拥有资源。
支持多线程的进程称为多线程(结构)进程(multiple threaded process)。多线程进程模型图如下:
线程的主要特性说明如下:
并发性——同一进程的多个线程可在一个或多个处理器上并发或并行地执行,而进程之间的并发执行演变为不同进程的线程之间的并发执行。
共享性——同一个进程中的所有线程共享但不拥有进程的状态和资源,且驻留在进程的同一个主存地址空间中,可以访问相同的数据。所以,线程之间需要有通信和同步机制。
动态性——线程是程序在相应数据集合上的一次执行过程,它有生命周期,也经历各种状态变化,由创建而产生,至撤销而消亡。当创建一个进程时,至少同时为其创建一个线程,需要时线程再创建其他线程。终止一个进程将导致进程中的所有线程终止。
结构性——线程是操作系统中的基本调度和分派单位,因此它具有唯一的标识符和线程控制块,其中包含调度所需的一切私有信息。
3.线程的状态
线程在其生命周期中经历这状态的变化,线程状态包括5种:新建、就绪、运行、等待(阻塞)、终止。线程的5种状态及状态转换如图
4.线程的并发性
在单处理器上,一组线程的执行在时间上是重叠的,它们的操作是交叉执行的,称这些线程是并发执行的。从宏观上看,在一个时间段中有几个线程都处于运行还未运行结束状态;从微观上上看,任一时刻仅有一个线程在处理器上运行。并发的实质是一个处理器在多线程之间的多路复用,并发是对有限的物理资源强制行使多用户共享,消除计算机部件之间的互等现象,提高系统资源利用率。
5.线程调度
由于任一时刻只有一个线程能够占用一个处理器运行,当有多个线程处于就绪态时,它们排队等待处理器资源。因此,按照什么原则决定就绪队列中的哪个线程能够获得处理器就是操作系统的重要问题,这就是线程调度的任务。
线程调度的功能是按照某种原则选择一个线程使它获得处理器运行。线程调度是操作系统中处理器的低级调度(low level scheduling)。线程调度中执行分配处理器的程序称为分派程序(dispatcher),它是操作系统最核心的部分,执行十分频繁。线程调度策略优劣直接影响到操作系统的性能。
线程调度采用剥夺方式,当一个线程正在处理器上执行时,操作系统可以根据规定的原则剥夺它的处理器使用权,而把处理器分配给其它线程使用。常用的剥夺原则有两种:一是高优先级线程可以剥夺低优先级线程运行;二是当运行线程时间使用完后被剥夺处理器。剥夺式策略可以避免一个线程长时间独占处理器,能给线程提供较好的服务。
因此,就绪态的线程需要按优先级排队,线程调度依据优先级基础上的“先到先服务”原则。线程的优先级(priority)描述线程执行的优先程度,反映线程的重要或紧急程度。
1.引入线程机制的动机和思路
操作系统采用进程机制使得多任务能够并发执行,提高了资源使用率和系统效率。在早期操作系统中,进程是系统进行资源分配的基本单位,也是处理器调度的基本单位,进程在任一时刻只有一个执行控制流,这种结构的进程称为单线程(结构)进程(Single threaded process)。
例如:MS-DOS支持单用户进程,进程是单线程的;传统的UNIX支持多用户进程,每个进程也是单线程的。单线程进程调度时存在进程时空开销大、进程通信代价大、进程并发粒度粗、不适合于并行计算等问题,操作系统引入线程机制来解决这些问题。
线程机制的基本思路是,把进程的两项功能——“独立分配资源”与“被调度分派执行”分离开来,前一项任务仍由进程完成,后一项任务交给称为线程的实体完成。这样,进程作为系统资源分配与保护的独立单位,不需要频繁地切换;线程作为系统调度和分派的基本单位,会被频繁地调度和切换。
2.线程的定义和属性
线程(thread)是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的线程。同一个进程中的所有线程共享进程获得的主存空间和资源,但不拥有资源。
支持多线程的进程称为多线程(结构)进程(multiple threaded process)。多线程进程模型图如下:
线程的主要特性说明如下:
并发性——同一进程的多个线程可在一个或多个处理器上并发或并行地执行,而进程之间的并发执行演变为不同进程的线程之间的并发执行。
共享性——同一个进程中的所有线程共享但不拥有进程的状态和资源,且驻留在进程的同一个主存地址空间中,可以访问相同的数据。所以,线程之间需要有通信和同步机制。
动态性——线程是程序在相应数据集合上的一次执行过程,它有生命周期,也经历各种状态变化,由创建而产生,至撤销而消亡。当创建一个进程时,至少同时为其创建一个线程,需要时线程再创建其他线程。终止一个进程将导致进程中的所有线程终止。
结构性——线程是操作系统中的基本调度和分派单位,因此它具有唯一的标识符和线程控制块,其中包含调度所需的一切私有信息。
3.线程的状态
线程在其生命周期中经历这状态的变化,线程状态包括5种:新建、就绪、运行、等待(阻塞)、终止。线程的5种状态及状态转换如图
4.线程的并发性
在单处理器上,一组线程的执行在时间上是重叠的,它们的操作是交叉执行的,称这些线程是并发执行的。从宏观上看,在一个时间段中有几个线程都处于运行还未运行结束状态;从微观上上看,任一时刻仅有一个线程在处理器上运行。并发的实质是一个处理器在多线程之间的多路复用,并发是对有限的物理资源强制行使多用户共享,消除计算机部件之间的互等现象,提高系统资源利用率。
5.线程调度
由于任一时刻只有一个线程能够占用一个处理器运行,当有多个线程处于就绪态时,它们排队等待处理器资源。因此,按照什么原则决定就绪队列中的哪个线程能够获得处理器就是操作系统的重要问题,这就是线程调度的任务。
线程调度的功能是按照某种原则选择一个线程使它获得处理器运行。线程调度是操作系统中处理器的低级调度(low level scheduling)。线程调度中执行分配处理器的程序称为分派程序(dispatcher),它是操作系统最核心的部分,执行十分频繁。线程调度策略优劣直接影响到操作系统的性能。
线程调度采用剥夺方式,当一个线程正在处理器上执行时,操作系统可以根据规定的原则剥夺它的处理器使用权,而把处理器分配给其它线程使用。常用的剥夺原则有两种:一是高优先级线程可以剥夺低优先级线程运行;二是当运行线程时间使用完后被剥夺处理器。剥夺式策略可以避免一个线程长时间独占处理器,能给线程提供较好的服务。
因此,就绪态的线程需要按优先级排队,线程调度依据优先级基础上的“先到先服务”原则。线程的优先级(priority)描述线程执行的优先程度,反映线程的重要或紧急程度。
发表评论
-
ThreadPoolExecutor线程池参数详解
2019-01-09 00:06 477参考:https://www.cnblogs.com/wayt ... -
解决线程同步问题的思路
2018-07-31 16:35 418线程同步机制 操作系统中实现线程同步有一种工 ... -
发送线程与接收线程 速率一致
2018-08-07 09:17 383package com.jbx.xiezuo; /* ... -
线程间的协作关系与线程同步
2018-07-30 16:21 5281.线程间的协作关系 当一个进程中的多个线程为完成同 ... -
带互斥锁的并发线程执行流程
2018-07-30 12:38 449... -
线程间的竞争关系与线程互斥
2018-07-30 11:19 671线程间的竞争关系与线 ... -
线程的同步机制
2018-07-17 11:31 384线程的同步机制 (一) ... -
3个线程,A,B,C,这三个线程分别只能打印 “a”,“b”,“c”,怎么让这三个线程依次打印“abc"
2018-07-17 11:19 351package com.jbx.thread; /* ... -
定时器与图形动画设计
2018-07-17 11:15 0动画(animation) 都是利用人眼的视 ... -
线程分类
2018-07-17 09:10 325线程分类: 线程可分为用户线程(user thread) ... -
线程优先级
2018-07-17 09:08 358Java提供10个等级的线程优先级,分别用1~10表示,优先级 ... -
设计滚动字演示线程状态及改变方法
2018-07-16 16:17 303本例演示线程对象的生 ... -
线程对象的生命周期
2018-07-16 11:28 361线程对象的生命周期 1.Thread.State类声明的线程状 ... -
声明实现Runnable接口的奇数/偶数序列线程
2018-07-11 14:02 427package com.jbx.thread; ... -
声明继承Thread类的奇数/偶数序列线程
2018-07-10 23:58 419package com.jbx.com; /** ... -
Java的线程对象Runnable接口和Thread类
2018-07-10 21:42 399Java支持内置的多线程机制。 Java语言包中的Runnab ... -
并发程序设计
2018-07-09 17:22 275并发程序设计 1.顺序程 ... -
进程介绍
2018-07-09 15:38 378进程 进程的定义和属性 进程是一个可并发执行的 ... -
多线程
2018-07-09 14:31 313...
相关推荐
GBase8s 线程介绍 GBase8s 线程是 GBase8s 数据库的核心组件之一,负责执行各种数据库操作。线程是操作系统的基本概念,它是操作系统分配 CPU 时间的基本单位。在 GBase8s 中,线程运行在数据库 VP(虚拟处理器)上...
本资源“C#多线程介绍.rar”包含了对这一主题的深入探讨,旨在帮助开发者理解和掌握C#中的多线程编程。 首先,我们要理解什么是线程。线程是操作系统分配CPU时间的基本单位,每个线程都有自己的程序计数器、系统栈...
【Linux线程介绍及应用】 线程作为操作系统中并行执行的基本单位,是现代软件开发中不可或缺的一部分。在Linux系统中,线程的实现遵循POSIX标准,即POSIX线程(Pthreads)。Pthreads提供了丰富的API接口,使得...
【VC++多线程介绍】 在Windows环境下,Visual Studio提供了对多线程的支持,使得开发者可以构建更加高效、响应迅速的应用程序。多线程技术允许应用程序同时执行多个独立的任务,从而提高了程序的并发性和资源利用率...
本资料包"多线程介绍.zip"提供了多线程场景的实例源码和相关的说明文档,旨在帮助开发者深入理解并熟练运用多线程技术。 1. **线程的概念** 线程是操作系统调度的基本单位,它共享进程的内存空间,有自己的程序...
【线程介绍(三)】 线程是操作系统中并发执行的程序执行流,它是进程内的一个执行单元。在C#中,线程的使用尤为重要,特别是在处理多任务和UI交互时。本文主要讨论的是线程在Windows Forms应用程序中的应用,特别...
本资源“很的全多线程介绍知识”显然提供了全面的多线程学习资料,非常适合对这一主题感兴趣或者需要提升这方面的技能的人下载学习。 首先,我们要理解什么是多线程。多线程是指在一个应用程序中同时执行多个独立的...
Java多线程是Java编程语言中的一个重要特性,它允许在单个程序中同时执行多个线程,从而提高程序的效率和响应性。本文将深入探讨Java多线程的基础概念、线程的生命周期以及一些关键的线程控制方法,如`suspend()`和`...
43 016_1多线程介绍.mp4
线程是计算机科学中的基本概念,特别是在编程语言如C#中,它允许程序并发执行多个任务,提升系统资源利用率和程序响应速度。本文将详细解释线程的基本概念、创建和管理,以及C#中实现线程的相关技术。 一、线程入门...
Java 多线程是编程中一个非常重要的概念,特别是在并发编程和系统设计中。Java 提供了一套完整的机制来管理和控制多线程的执行,以确保程序的正确性和高效性。本文将深入探讨 Java 中的多线程相关知识,包括线程的...
本文将深入讲解线程的相关知识,包括进程与线程的区别、使用线程的优势、线程操作的函数、线程同步与互斥,以及通过一道面试题来实践这些理论。 首先,我们要明确进程与线程的概念。进程是系统资源分配的基本单位,...
线程是操作系统分配CPU执行时间的基本单位,是程序执行流的最小单元,它与进程不同,进程是系统资源分配的独立单位,而线程共享进程内的资源,如内存、文件描述符等。在多核或多处理器系统中,线程可以并发执行,极...
C#,多线程,介绍,html格式 C#,多线程,介绍,html格式 C#,多线程,介绍,html格式 C#,多线程,介绍,html格式 C#,多线程,介绍,html格式 C#,多线程,介绍,html格式 C#,多线程,介绍,html格式
多线程
在编程领域,多线程是一种重要的并发执行方式,它允许程序同时执行多个任务,从而提高系统资源利用率和程序响应速度。Qt是一个流行的跨平台应用程序开发框架,提供了丰富的API支持多线程编程。本文将深入探讨Qt中的...
线程是操作系统中并行执行的实体,它们共享同一进程的资源,如内存和打开的文件。在C#中,线程管理是.NET框架的重要组成部分,它提供了多种机制来控制线程的行为,特别是线程同步。 线程同步是为了避免多个线程同时...
本章主要介绍多线程编程的基础知识,包括并发与多线程的概念、多线程编程的重要性、线程的运行机制、并发编程面临的挑战以及如何使用Java中的线程进行编程。 现代计算机具有多个核心,通常为5-10个,但也有如Intel...
在计算机科学领域,多线程是一种程序设计技术,它允许应用程序同时执行多个任务或子任务。这提高了系统资源的利用率,特别是在多核处理器系统中,每个线程可以在一个单独的处理器核心上运行,从而实现真正的并行处理...
2. **多线程**:多线程则是指一个进程中可以存在多个并发执行的线程,它们共享同一内存空间。线程间的通信相对简单,但需要注意竞态条件和死锁等问题。 二、Python中的多进程与多线程 1. **Python多进程**:Python...