线程是什么(线程是什么的基本单位)

更新时间:2023-03-01 08:33:43 阅读: 评论:0

什么是线程?

1.1 什么是线程

线程是操作系统能够进行运算调度的基本单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。和进程类似,一个线程也有就绪、运行、阻塞三种基本转状态。

线程是处理机的独立调度单位,多个线程可以并发执行。每个线程都应有一个唯一的标示符和线程控制块。线程控制块记录了线程执行的寄存器和栈等现场状态。
1.2 时间片
时间片是分时操作系统分配给每个正在运行的进程微观上的一段CPU时间,时间片的大小对系统的性能影响很大。
如果时间片足够大,以至于所有进程都能在一个时间片内执行完毕,则时间片轮转调度算法就退化为先来先服务调度算发。如果时间片很小,那么处理机将在进程间过于频繁切换,使处理机的开销增大,而真正用于处理用户作业的时间将减少,因此时间片的大小应选择适当。
1.3 线程安全
线程不持有资源,但是同一进程中的所有线程可以共享进程的资源,所以说我们遇到的大部分线程的问题基本是因为共享资源引起的。
也就是说,当多个线程同时访问一块共享资源(某一块内存),因为时序性问题,会导致数据错乱,这就是线程不安全。
1.4 同步、异步

同步:在发出一个同步调用时,在没有得到结果之前,该调用就不返回。
异步:在发出一个异步调用后,调用者不会立刻得到结果,该调用就返回了。

1.5 并发,并行

并发是同一个时间段内,几个作业都在同一个CPU上运行,但任意一个时刻点上只有一个作业在处理机上运行。

并行是同一个时间段内,几个作业在几个CPU上运行,任意一个时刻点上,有多个作业在同时运行,并且多个作业之间互不干扰

什么是线程

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。

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

一个进程可以有很多线程,每条线程并行执行不同的任务。

线程特点

1、轻型实体

线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述。

2、独立调度和分派的基本单位

在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。

3、可并发执行

在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。

4、共享进程资源

在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址。

此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。


什么是线程?

线程(英文:thread),台湾地区译为执行绪(英文:thread ofexecution)、绪程,操作系统技术中的术语,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是行程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并行多个线程,每条线程并行执行不同的任务。在Unix SystemV及SunOS中也被称为轻量进程(lightweight process),但轻量进程更多指内核线程(kernel thread),而把用户线程(ur thread)称为线程。计算机科学术语,指运行中的程序的调度单位。

线程具有以下属性。

  1)轻型实体

  线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源,比如,在每个线程中都应具有一个用于控制线程运行的线程控制块TCB,用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。

  2)独立调度和分派的基本单位。

  在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小。

  3)可并发执行。

  在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行。

  4)共享进程资源。

  在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。

什么是线程?有什么用 讲得通俗点

1、线程的定义

线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。

线程,在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看。因此,操作系统中线程的概念便被引进了。

线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的。线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。

2、线程的作用:

线程的作用很多,举个最为典型的例子:

当需要在网络上放一个服务端,一个客户端访问时,就会新建一个线程处理这个客户端的事务,这样的话只要不断新建线程就可以处理多个用户的请求了。

扩展资料

线程的五种状态:

1、新生状态(New)

当一个线程的实例被创建即使用new关键字和Thread类或其子类创建一个线程对象后,此时该线程处于新生状态。 此时线程不是活着的(not alive);

2、就绪状态(Runnable)

通过调用线程实例的start()方法来启动线程使线程进入就绪状态;但还没有被分配到CPU,处于线程就绪队列;此时线程是活着的(alive)。

3、运行状态(Running)

一旦获取CPU,线程就进入运行状态,线程的run()方法才开始被执行,如果在给定的时间内没有执行结束,就会被系统给换下来回到线程的就绪状态,此时线程是活着的(alive)。

4、阻塞状态(Blocked)

通过调用join()、sleep()、wait()或者资源被暂用使线程处于阻塞状态,此时线程是活着的(alive)。

5、死亡状态(Dead)

当一个线程的run()方法运行完毕或被中断或被异常退出,该线程到达死亡状态。处于Dead状态调用start()方法,会出现异常。

参考资料:百度百科-线程


什么是线程?

线程是指程序的一个指令执行序列,WIN32 平台支持多线程程序,允许程序中存在多个线程。 在单 CPU 系统中,系统把 CPU 的时间片按照调度算法分配给各个线程,因此各线程实际上是分时执行的,在多 CPU 的 Windows NT 系统中, 同一个程序的不同线程可以被分配到不同的 CPU 上去执行。由于一个程序的各线程是在相同的地址空间运行的,因此设及到了如何共享内存, 如何进行线程通信等问题,这样便需要处理各线程之间的同步问题,这是多线程编程中的一个难点。

什么是线程??

是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
  线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.
  线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU
  线程的周期
  新建 就绪 运行 阻塞 死亡
  线程调度与优先级
  有线程进入了就绪状态,需要有线程调度程序来决定何时执行,根据优先级来调度.
  线程组
  每个线程都是一个线程组的一个成员,线程组把多个线程集成一个对象,通过线程组可以同时对其中的多个线程进行操作.在生成线程时必须将线程放在指定的线程组,也可以放在缺省的线程组中,缺省的就是生成该线程的线程所在的线程组.一旦一个线程加入了某个线程组,不能被移出这个组.
  守护线程
  是特殊的线程,一般用于在后台为其他线程提供服务.
  isDaemon():判断一个线程是否为守护线程.
  t Daemon():设置一个线程为守护线程.
  Thread类和Runnable接口
  Thread类
  类Thread在包java.lang中定义,它的构造方法如下:
  public Thread();
  public Thread(Runnable target);
  public Thread(Runnable target,String name);
  public Thread(String name);
  public Thread(ThreadGroup group,Runnable target);
  public Thread(ThreadGroup group, String name);
  主要方法
  isActive() 判断是否处于执行状态
  Suspend() 暂停执行
  reSume 恢复执行
  start() 开始执行
  Stop() 停止执行
  sleep() 睡眠
  run() 程序体
  yield() 向其他线程退让运行权
  线程优先级
  Public statuc final int MAX_PRIORITY最高优先级,10
  Public statuc final int MIN_PRIORITY最低优先级,1
  Public statuc final int NORM_PRIORITY普通优先级,5
  Runnable接口
  Runnable接口中只定义了一个方法run()作为线程体,
  void run()
  Java的线程是通过java.lang.Thread类来实现的。
  VM启动时会有一个由主方法(public static void main(){})所定义的线程。
  可以通过创建Thread的实例来创建新的线程。
  每个线程都是通过某个特定的Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。
  通过调用Thread类的start()方法来启动一个线程
  Java里面实现多线程,有2个方法
  1 继承 Thread类,比如
  class MyThread extends Thread {
  public void run() {
  // 这里写上线程的内容
  }
  public static void main(String[] args) {
  // 使用这个方法启动一个线程
  new MyThread().start();
  }
  }
  2 实现 Runnable接口
  class MyThread implements Runnable{
  public void run() {
  // 这里写上线程的内容
  }
  public static void main(String[] args) {
  // 使用这个方法启动一个线程
  new Thread(new MyThread()).start();
  }
  }
  一般鼓励使用第二种方法,应为Java里面只允许单一继承,但允许实现多个接口。第二个方法更加灵活。

本文发布于:2023-02-28 19:44:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167763082369301.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:线程是什么(线程是什么的基本单位).doc

本文 PDF 下载地址:线程是什么(线程是什么的基本单位).pdf

上一篇:什么是逆回购
下一篇:返回列表
标签:线程   基本单位
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|