`

线程与进程

 
阅读更多

[进程  线程]

一个程序至少有一个进程,一个进程至少有一个线程. 线程是指进程内的一个执行单元,也是进程内的可调度实体.

区别:

(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
(4)二者均可并发执行.

一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

 

学习资料:http://www.ibm.com/developerworks/cn/java/j-lo-processthread/

线程的生命周期需要经历五种状态:

1 新建(New)——2 就绪(Runnable)——3运行(Running)——4 等待/阻塞(Wait/Blocked)——5 死亡(Dead)

 

1 新建(New):当一个线程对象被创建后,线程就处于新建状态。在新建状态中的线程对象从严格意义上看还只是一个普通的对象,它还不是一个独立的线程。处于新建状态中的线程被调用start方法后就会进就绪状态。从新建状态中只能进入就绪状态,并且不能从其他状态进行新建状态。新建状态是线程生命周期的第一个状态。 

2 就绪(Runnable):处于新建状态中的线程被调用start方法就会进入 就绪状态。处于就绪状态下的线程随时都可能被系统选择进入运行状态,从而执行线程。可能同时有多个线程处于 就绪状态,对于哪一个线程将进入运行状态是不确定的。线程从新建状态进入到 就绪状态后是不可能再进入新建状态的。在等待/阻塞状态中的线程被解除等待和阻塞后将不直接进入运行状态,而是首先进入准备状态,让系统来选择哪一个线程进入运行状态。 

3运行(Running):处于就绪状态中的线程一旦被系统选中,使线程获取了CPU时间,就会进入运行状态。在运行状态中将执行线程类run方法中的程序语句。线程进入运行状态后也不是一执行结束的,线程在运行状态下随时都可能被调度程序调度回准备状态。在运行状态下还可以让线程进入到等待/阻塞状态。在通常的单核CPU中,在同一时刻只有一个线程处于运行状态的。在多核的CPU中,就可能两个线程或者更多的线程同时处于运行状态,这也是多核CPU运行速度快的原因。 

4 等待/阻塞(Wait/Blocked):在Java中定义了许多线程调度的方法,包括睡眠、阻塞、挂起和等待,使用这些方法都会将处于运行状态的线程调度到等待/阻塞状态。处于等待/阻塞状态的线程被解除后,不会立即回到运行状态,而是首先进入就绪状态,等待系统的调度。

5 死亡(Dead):当线程中的run方法执行结束后,或者程序发生异常终止运行后,线程会进入死亡状态。处于死亡状态的线程不能再使用start方法启动线程。但是这不代表处于死亡状态的线程不能被使用,它也是可以再被使用的,只是将被作为普通的类来使用。

 

 

 

  • 大小: 20.6 KB
分享到:
评论

相关推荐

    python线程与进程实现方式

    本篇将详细探讨Python中的线程与进程,以及它们与生成器和装饰器的关系。 首先,我们要了解线程与进程的基本概念。进程是操作系统分配资源的基本单位,每个进程都有独立的内存空间。线程则是进程内部的执行单元,...

    JAVA线程与进程的区别

    但是进程与线程的重要区别在于线程不能够单独执行,它必须运行在处于活动状态的应用程序进程中。 在 Java 语言中,线程支持与语言运行环境结合在一起,提供了多任务并发执行,多线程的意义在于一个应用程序的多个...

    操作系统实验报告——线程与进程同步

    操作系统实验报告——线程与进程同步,主要探讨了在Linux环境下如何实现进程和线程的同步,以解决经典的生产者-消费者问题。该实验旨在帮助学生掌握操作系统提供的同步机制,并深化对经典同步问题的理解。 实验内容...

    73道Java面试题合集-多线程与进程

    1. **进程与线程的概念**: - **进程**:是操作系统资源分配的基本单位,拥有独立的内存空间和系统资源,可以并发执行。 - **线程**:是程序执行的最小单元,共享同一进程的资源,有自己的程序计数器、栈和局部...

    线程 与 进程 资料

    三、进程与线程的区别 1. 资源分配:进程拥有独立的资源,而线程共享进程的资源。 2. 创建和销毁:创建和销毁进程的开销较大,而线程的创建和销毁相对快速。 3. 内存模型:进程间内存独立,线程间共享内存。 4. 并发...

    线程与进程的区别

    进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程...

    关于线程与进程详细解说 图解 最实用 最全面

    在计算机科学领域,进程与线程是两个核心概念,对于理解操作系统的工作原理至关重要。本文将深入探讨这两个概念,并通过直观的图解来帮助读者更好地理解它们之间的区别与联系。 #### 二、基本概念 1. **进程**:...

    线程与进程的区别(执行过程、逻辑)

    线程与进程是操作系统中两种基本的执行单元,它们各自有着独特的特性和作用。理解这两者的区别对于理解和优化软件性能至关重要。 首先,进程是操作系统分配资源的基本单位,它代表了一个程序在内存中的完整实例。在...

    15.线程与进程.doc

    线程与进程是操作系统中并发执行的基本单位,理解它们的概念和特性对于编写高效的多任务程序至关重要。线程,可以理解为程序中独立的控制流,它不拥有独立的资源,而是共享同一进程的资源,包括内存空间、打开的文件...

    Android下线程与进程

    总之,理解和掌握Android中的线程与进程是开发高质量应用的基础,它们直接影响到应用的响应速度、稳定性以及资源利用率。`WorkThreadDemo`这样的实例代码可以帮助开发者更好地理解并实践这些概念。

    线程与进程的理论知识入门1线程与进程的理论知识入门1

    线程与进程的理论知识入门1线程与进程的理论知识入门1线程与进程的理论知识入门1线程与进程的理论知识入门1

    线程与进程的主要区别简介

    - **`vfork()`**:与`fork()`类似,但是`vfork()`创建的子进程与父进程共享数据段,这使得在子进程中修改任何共享数据都可能会影响父进程。此外,`vfork()`保证子进程先运行,直到它调用`exec()`或`exit()`后父进程...

    线程与进程 Processes or Threads part1.pdf

    这是关于并列与分布式的技术文档的一部分,Processes or Threads 线程与进程,本开发文档适合对于并列与分布式感兴趣的有一定计算机基础初学的朋友,一个快捷的学习文档或者温故知新,这是第一部分不要忘了第二部分...

    Java面向对象程序设计-并发(线程与进程).pptx

    Java面向对象程序设计中的并发处理,特别是在农业信息系统开发中,是一个关键的概念,因为高效的数据处理和多...在实际开发中,合理的设计和管理进程与线程,结合适当的同步机制,可以显著提升系统的性能和用户体验。

    线程与进程的理论知识入门2

    线程与进程的理论知识入门2线程与进程的理论知识入门2

    线程与进程的比较.pptx

    线程与进程的比较.pptx

    线程与进程 Processes or Threads part2.pdf

    这是关于并列与分布式的技术文档的一部分,Processes or Threads 线程与进程,本开发文档适合对于并列与分布式感兴趣的有一定计算机基础初学的朋友,一个快捷的学习文档或者温故知新。可以尝试一下如何利用这个技术

Global site tag (gtag.js) - Google Analytics