- 浏览: 87364 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 458参考:https://www.cnblogs.com/wayt ... -
解决线程同步问题的思路
2018-07-31 16:35 402线程同步机制 操作系统中实现线程同步有一种工 ... -
发送线程与接收线程 速率一致
2018-08-07 09:17 373package com.jbx.xiezuo; /* ... -
线程间的协作关系与线程同步
2018-07-30 16:21 5101.线程间的协作关系 当一个进程中的多个线程为完成同 ... -
带互斥锁的并发线程执行流程
2018-07-30 12:38 426... -
线程间的竞争关系与线程互斥
2018-07-30 11:19 648线程间的竞争关系与线 ... -
线程的同步机制
2018-07-17 11:31 351线程的同步机制 (一) ... -
3个线程,A,B,C,这三个线程分别只能打印 “a”,“b”,“c”,怎么让这三个线程依次打印“abc"
2018-07-17 11:19 337package com.jbx.thread; /* ... -
定时器与图形动画设计
2018-07-17 11:15 0动画(animation) 都是利用人眼的视 ... -
线程分类
2018-07-17 09:10 296线程分类: 线程可分为用户线程(user thread) ... -
线程优先级
2018-07-17 09:08 333Java提供10个等级的线程优先级,分别用1~10表示,优先级 ... -
设计滚动字演示线程状态及改变方法
2018-07-16 16:17 280本例演示线程对象的生 ... -
线程对象的生命周期
2018-07-16 11:28 337线程对象的生命周期 1.Thread.State类声明的线程状 ... -
声明实现Runnable接口的奇数/偶数序列线程
2018-07-11 14:02 404package com.jbx.thread; ... -
声明继承Thread类的奇数/偶数序列线程
2018-07-10 23:58 396package com.jbx.com; /** ... -
Java的线程对象Runnable接口和Thread类
2018-07-10 21:42 368Java支持内置的多线程机制。 Java语言包中的Runnab ... -
并发程序设计
2018-07-09 17:22 252并发程序设计 1.顺序程 ... -
进程介绍
2018-07-09 15:38 350进程 进程的定义和属性 进程是一个可并发执行的 ... -
多线程
2018-07-09 14:31 292...
相关推荐
Java 多线程介绍 线程的几种状态 1
C#多线程介绍.rar
GBase8s线程介绍.docx
线程介绍和 线程安全 synchroinzed 的使用,这里还涉及到一个控制台console 打印输出到本地的小技巧
线程介绍(二)
线程介绍(三)
多任务执行:多进程多线程介绍
s60系列智能机器的线程介绍 让你了解s60的一些线程的作用 能让机器减少内存占有
C#,多线程,介绍,html格式 C#,多线程,介绍,html格式 C#,多线程,介绍,html格式 C#,多线程,介绍,html格式 C#,多线程,介绍,html格式 C#,多线程,介绍,html格式 C#,多线程,介绍,html格式
多线程
主要是讲解了一些多线程的相关知识,可以帮助不熟悉多线程的朋友,更好的学习多线程
本文一个例子展开,介绍Linux下面线程的操作、多线程的同步和互斥
对于多线程的详细介绍,从网上收集整理的资料,对于初学者很有用
初识线程,循序渐进,是一种重要的技术支持,对大家入门有帮助
多线程
详细介绍了线程的历史由来以及现成的创建和使用方法,和进程的几个不同点
VC++多线程方面的资料. 自己翻译的,凑合看. 共同学习,共同进步.
各种多线程场景实例源码demo及说明文档
多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多...
多线程