首页 理论教育 Java程序设计:进程与线程

Java程序设计:进程与线程

时间:2023-11-16 理论教育 版权反馈
【摘要】:图11.1任务管理器窗口在多任务操作系统中,表面上看是支持进程并发执行的,例如可以一边听音乐一边聊天。操作系统中的每一个进程中都至少存在一个线程。图11.2多线程程序的执行过程说明:· 单线程都是按照调用顺序依次往下执行,没有出现多段程序代码交替运行的效果,而多线程程序在运行时,每个线程之间都是独立的,它们可以并发执行。线程有就绪、阻塞和运行三种基本状态。

Java程序设计:进程与线程

学习线程之前,需要先了解一下什么是进程。在一个操作系统中,每个独立执行的程序都可称为一个进程,也就是“正在运行的程序”。目前大部分计算机上安装的都是多任务操作系统,即能够同时执行多个应用程序,最常见的有Windows、Linux、Unix 等。在本教材使用的Windows 操作系统下,鼠标右键单击任务栏,选择【启动任务管理器】选项可以打开任务管理器面板,在窗口的【进程】选项卡中可以看到当前正在运行的程序,也就是系统所有的进程,如chrome.exe、QQ.exe 等。任务管理器的窗口如图11.1 所示。

图11.1 任务管理器窗口

在多任务操作系统中,表面上看是支持进程并发执行的,例如可以一边听音乐一边聊天。但实际上这些进程并不是同时运行的。在计算机中,所有的应用程序都是由CPU 执行的,对于一个CPU 而言,在某个时间点只能运行一个程序,也就是说只能执行一个进程。操作系统会为每一个进程分配一段有限的CPU 使用时间,CPU 在这段时间中执行某个进程,然后会在下一段时间切换到另一个进程中去执行。由于CPU 运行速度很快,能在极短的时间内在不同的进程之间进行切换,所以给人以同时执行多个程序的感觉

通过前面的学习可以知道,每个运行的程序都是一个进程,在一个进程中还可以有多个执行单元同时运行,这些执行单元可以看作程序执行的一条条线索,被称为线程。操作系统中的每一个进程中都至少存在一个线程。例如,当一个Java 程序启动时,就会产生一个进程,该进程中会默认创建一个线程,在这个线程上会运行main()方法中的代码。

在前面章节所接触过的程序中,代码都是按照调用顺序依次往下执行,没有出现两段程序代码交替运行的效果,这样的程序称作单线程程序。如果希望程序中实现多段程序代码交替运行的效果,则需要创建多个线程,即多线程程序。所谓的多线程是指一个进程在执行过程中可以产生多个单线程,这些单线程程序在运行时是相互独立的,它们可以并发执行。

多线程程序的执行过程如图11.2 所示。

图11.2 多线程程序的执行过程

说明:

· 单线程都是按照调用顺序依次往下执行,没有出现多段程序代码交替运行的效果,而多线程程序在运行时,每个线程之间都是独立的,它们可以并发执行。(www.xing528.com)

· 多线程可以充分利用CUP 资源,进一步提升程序执行效率

· 多线程看似是同时并发执行的,其实不然,它们和进程一样,也是由CPU 控制并轮流执行的,只不过CPU 运行速度非常快,故而给人同时执行的感觉。

1. 进程的概念

要解释线程,就必须明白什么是进程。

进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间),比如用户单击桌面的IE 浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。当用户再次单击左面的IE 浏览器,又启动了一个进程,操作系统将为新的进程分配新的独立的地址空间。目前操作系统都支持多进程。

要点:用户每启动一个进程,操作系统就会为该进程分配一个独立的内存空间。

2. 线程的概念

在明白进程后,就比较容易理解线程的概念。

线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。线程有就绪、阻塞和运行三种基本状态。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈