Java 进程与多线程
Posted yuanmath
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 进程与多线程相关的知识,希望对你有一定的参考价值。
线程是应用程序中执行的基本单元。多线程就是允许将一个程序分成几个并行的子任务,各子任务相互独立并发执行。
进程属于操作系统的概念,表示程序(任务)的执行过程。进程具有动态性,持有资源(共享内存、共享文件等)和线程,是资源和线程的载体。
每一个进程都有自己的地址空间,一般情况下,包括文本区域(text region)、数据域(data region)和堆栈区域(stack region)。
文本区域用来存储处理器执行的代码;数据区域用来存储变量和进程执行期间使用的动态分配的内存;堆栈区域用来存储活动过程调用的指令和本地变量。
现在的操作系统都是多任务操作系统,如听歌的同时还在用QQ 聊天。听歌和聊天就是两个任务,这两个任务是同时进行的。
一个任务通常对应一个进程,也可能包含多个进程。
进程具有如下特征:
? 进程实质上是程序在多道程序系统中的一次执行过程,是动态产生和消亡的;
? 任何进程都可以与其他进程一起并发执行;
? 进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
注意:多个进程可以并发执行同一个程序。
传统的程序,同一时刻只能执行单任务操作,效率非常低。
如果网络程序在接收数据时发生阻塞,只能等到程序接收数据之后才能继续运行。随着因特网的飞速发展,这种单任务运行的状况越来越不被接受。如果网络接收数据发生阻塞,后台服务程序就会一直处于等待状态而不能继续任何操作。这种阻塞情况经常发生,这时的 CPU 资源完全处于闲置状态。
线程(Thread)是控制线程(Thread of Control)的缩写,它是具有一定顺序的指令序列(即所编写的程序代码)、定义局部变量的栈和一些共享数据。
线程是相互独立的,每个方法的局部变量和其他线程的局部变量是分开的,因此,任何线程都不能访问除自身之外的其他线程的局部变量。如果两个线程同时访问同一个方法,那么每个线程将各自得到此方法的一个副本。
线程有时也被称为小进程,它是从一个大进程里分离出来的小而独立的线程。
事实上,前面介绍的程序都属于单线程程序。当它执行完 main 方法的程序后,线程正好退出,程序同时结束运行。
多线程实现后台服务程序可以同时处理多个任务,并且不发生阻塞现象。
多线程是Java 语言的一个很重要的特征。
多线程程序设计最大的特点就是能够提高程序执行效率和处理速度。
Java 程序可同时并行运行多个相对独立的线程。例如,创建一个线程来接收数据,另一个线程发送数据,即使发送线程在接收数据时被阻塞,接收数据线程仍然可以运行。
Java 提供的多线程机制使一个程序可同时执行多个任务。由于实现了多线程技术,Java 显得更健壮。
多线程的优势是具有更好的交互性能和实时控制性能。
多线程是强大而灵巧的编程工具,但要用好它却不是件容易的事。
在多线程编程中,每个线程都通过代码实现线程的行为,并将数据提供给代码进行操作。编码和数据有时是相当独立的,可分别提供给线程。多线程可以同时处理同一代码和同一数据,不同的线程也可以处理各自不同的编码和数据。
注意:多线程的目的是为了最大限度地利用CPU 资源。
在某个进程中创建多个线程
Java 中,创建多线程的方法有两种:一种是继承Thread 类并覆盖run() 方法;另一种是通过实现 Runnable 接口创建并重写run() 方法。
两种创建多线程的方法所涉及的Java API 的示意图如图所示。
以上是关于Java 进程与多线程的主要内容,如果未能解决你的问题,请参考以下文章