java多线程系列01(进程与线程)
2016-07-04 21:07
197 查看
进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动(是一个动态的概念),进程是系统进行资源分配和调度的独立单位。
线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为
232 。进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。
进程 进程控制块 PCB +相关程序段 和+该程序段对其进行操作的数据结构集
区别:线程的改变只代表了 CPU 执行过程的改变,而没有发生进程所拥有的资源变化。出了
CPU 之外,计算机内的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。与进程控制表和 PCB 相似,每个线程也有自己的线程控制表 TCB ,而这个 TCB 中所保存的线程状态信息则要比 PCB 表少得多,这些信息主要是相关指针用堆栈(系统栈和用户栈),寄存器中的状态数据。进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在;反之,线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。
1. 线程的执行特性。
线程只有 3 个基本状态:就绪,执行,阻塞。
线程存在 5 种基本操作来切换线程的状态:派生,阻塞,激活,调度,结束。
2. 进程通信。
单机系统中进程通信有 4 种形式:主从式,会话式,消息或邮箱机制,共享存储区方式。
主从式典型例子:终端控制进程和终端进程。
会话式典型例子:用户进程与磁盘管理进程之间的通信。
关于使用进程还是用线程,那要看你的任务的具体情况。
如果你的任务需要独立分配大量资源,而且与现有环境不需要交换太多数据,你可以产生一个独立的进程。进程的管理、操作比线程方便多了。不需要去关心太多同步与共享的问题。
如果你的任务比较轻量级,同时却需要产生大量的任务(需要很多线程or进程),这时用线程比较好,因为产生一个线程的开销比进程要小得多!!
线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为
232 。进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。
进程 进程控制块 PCB +相关程序段 和+该程序段对其进行操作的数据结构集
区别:线程的改变只代表了 CPU 执行过程的改变,而没有发生进程所拥有的资源变化。出了
CPU 之外,计算机内的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。与进程控制表和 PCB 相似,每个线程也有自己的线程控制表 TCB ,而这个 TCB 中所保存的线程状态信息则要比 PCB 表少得多,这些信息主要是相关指针用堆栈(系统栈和用户栈),寄存器中的状态数据。进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在;反之,线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。
1. 线程的执行特性。
线程只有 3 个基本状态:就绪,执行,阻塞。
线程存在 5 种基本操作来切换线程的状态:派生,阻塞,激活,调度,结束。
2. 进程通信。
单机系统中进程通信有 4 种形式:主从式,会话式,消息或邮箱机制,共享存储区方式。
主从式典型例子:终端控制进程和终端进程。
会话式典型例子:用户进程与磁盘管理进程之间的通信。
关于使用进程还是用线程,那要看你的任务的具体情况。
如果你的任务需要独立分配大量资源,而且与现有环境不需要交换太多数据,你可以产生一个独立的进程。进程的管理、操作比线程方便多了。不需要去关心太多同步与共享的问题。
如果你的任务比较轻量级,同时却需要产生大量的任务(需要很多线程or进程),这时用线程比较好,因为产生一个线程的开销比进程要小得多!!
相关文章推荐
- java1.7集合源码阅读: Stack
- Java中的String字符串,异常处理,和泛型
- 解决maven以及eclipse的jar以及exe中文乱码问题
- struts2的原理
- java原子操作类-原子数组类
- Spring配置文件的命名空间URI
- Spring(一):Spring概念、基本例子入门
- Eclipse断点调试
- mysql 存储过程的权限问题 java.sql.SQLException: The user specified as a definer ('xxxx'@'%') does not exist
- java的一些随笔
- 【Spring】java.lang.IndexOutOfBoundsException: Index: 256, Size: 256
- 加密 算法 & Java implementation
- SSH框架之Spring
- 对象导论之被隐藏的具体实现
- jar包源码的导入---让开发中可以去看别人的源码
- jar包源码的导入---让开发中可以去看别人的源码
- jar包源码的导入---让开发中可以去看别人的源码
- jar包源码的导入---让开发中可以去看别人的源码
- LeetCode---Sum of Two Integers
- 如何利用java得到当前的时间和前一天的时间