本文主要是介绍java学习记录(15)——线程与进程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
单线程的程序只有一个顺序执行流,多线程的程序则可以包括多个顺序执行流,多个顺序流之间互不干扰。
一个任务通常就是一个程序,每个运行中的程序就是一个进程。
当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。
几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程(Process),当一个程序进入内存运行时,即变成一个进程。进程包含如下三个特征:
独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间。在没有经过进程本身允许的情况下,一个用于进程不可以直接访问其他进程的地址空间。
动态性:进程和程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。进程中加入了时间的概念。
并发性:多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响。
并发性和并行性是两个概念,并行指在同一时刻,有多条指令在多个处理器上同时执行;并发指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。
多线程扩展了多进程的概念,使得同一个进程可以同时并发处理多个任务,线程(Thread)被称作轻量级进程,线程是进程的执行单元。线程在程序中是独立的、并发的执行流。
线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程。
线程是独立运行的。
操作系统可以同时执行多个任务,每个任务就是进程;进程可以同时执行多个任务,每个任务就是线程。
多线程共享同一个进程虚拟空间,线程共享的环境包括:进程代码段、进程的公有数据等。
多线程编程具有如下有点:
进程之间不能共享内存,但线程之间共享内存非常容易;
系统创建进程时需要为该进程重新分配系统资源,但创建线程则代价小得多,因此使用多线程来实现多任务并发比多进程的效率高;
java语言内置了多线程功能支持,而不是单纯地作为底层操作系统的调度方式,简化了java的多线程编程。
这篇关于java学习记录(15)——线程与进程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!