码迷,mamicode.com
首页 > 编程语言 > 详细

Java 进程与多线程(一)

时间:2020-07-09 22:46:46      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:目的   动态分配   好的   速度   技术   操作   inf   闲置   创建   

线程是应用程序中执行的基本单元。多线程就是允许将一个程序分成几个并行的子任务,各子任务相互独立并发执行。

进程属于操作系统的概念,表示程序(任务)的执行过程。进程具有动态性,持有资源(共享内存、共享文件等)和线程,是资源和线程的载体。
每一个进程都有自己的地址空间,一般情况下,包括文本区域(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 进程与多线程(一)

标签:目的   动态分配   好的   速度   技术   操作   inf   闲置   创建   

原文地址:https://www.cnblogs.com/yuanmath/p/13276446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!