线程和进程的概念
程序
程序是能够被计算机执行的指令序列。它是一段可以执行的静态的代码,在存放到磁盘之后就形成了一个可执行文件。
进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。简单的说,进程是加载到内存中并可执行的程序,是程序的一次动态执行过程。
线程
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
线程和进程之间的联系和区别
-
和线程相关的状态信息远少于进程状态信息的数量,所以,能够迅速的保存和回复线程的状态,此外,线程必须经常和同组的其他线程共享资源。这样也就减少了上下文转换所需的时间,提高了系统效率。
-
“线程”是进程内部单一的一个顺序控制流。一个进程可能容纳了多个同时执行的线程。与进程不同的是同类的多个线程是共享一块内存空间和一组系统资源的,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈,这也使得系统在进行线程切换时,负担要比进程小得多。
-
Java线程与应用程序的区别在于线程是应用程序执行体的一部分,线程不能单独运行,必须由应用程序启动或者终止线程。
-
Java语言的多线程并不是多个语句同时执行(在实际的过程中,只会有一个执行单元处于CPU执行序列),而是一个应用程序内部执行多个序列。Java应用程序通过多线程控制的多任务并发执行,改善了程序的运行状态