进程:

是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体

进程的特点:

每一个进程都有自己的独立的一块内存空间、一组资源系统。其内部数据和状态都是完全独立的。

怎么看待进程?

进程的优点是提高CPU运行效率,在同一时间内执行多个程序,即并发执行。但是从严格上讲,也不是绝对的同一时刻执行多个程序,只不过CPU在执行时通过时间片等调度算法不同进程高速切换。进程类似于人类,是被产生的,有或长或短的有效生命,可以产生一个或多个子进程,最终都要消亡的。每个子进程都只有一个父进程。在这里顺带提下,Linux里通过调用fork()函数产生子进程。子进程在创建时,它几乎和父进程相同。它是从父进程的地址空间copy过来的。尽管它们可以共享有程序代码的页,但是它们各自有独立的数据空间。对子进程内存的修改不会影响父进程,反之亦然。

什么是守护进程?

在系统的引导的时候会开启很多服务,这些服务就叫做守护进程,也叫后台服务程序,它的生命周期较长,在系统关闭时终止。这个在linux中经常提到init进程,超级守护进程。

线程的概念

线程是指进程内的一个执行单元,也是进程内的可调度实体.一个线程是进程的一个顺序执行流。

同类的多个线程共享一块内存空间和一组系统资源,线程本身的数据通常只有CPU的寄存器数据,以及一个供程序执行时的堆栈。线程在切换时负荷小,因此,线程也被称为轻负荷进程。一个进程中可以包含多个线程。

与进程的区别:
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
(4)  二者均可并发执行.

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:  简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。
      另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
      线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
      从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行

转载于:https://blog.51cto.com/crayworklife/924105

java 进程和线程相关推荐

  1. java 线程不足_jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储...

    jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程. 我想获得该子进程的线程/堆转储. 在Uni ...

  2. [Java]进程与线程的区别(转)

    [Java]进程与线程的区别(转) 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自 ...

  3. Java进程和线程关系及区别

    1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基 ...

  4. java进程与线程_Java多线程笔记(零):进程、线程与通用概念

    前言 不积跬步,无以至千里:不积小流,无以成江海.在学习Java多线程相关的知识前,我们首先需要去了解一点操作系统的进程.线程以及相关的基础概念. 进程 通常,我们把一个程序的执行称为一个进程.反过来 ...

  5. jstack-查看Java进程的线程堆栈信息,锁定高消耗资源代码

    jstack主要用来查看某个Java进程内的线程堆栈信息.语法格式如下: jstack [option] pid jstack [option] executable core jstack [opt ...

  6. 你如何在java中获取线程堆_如何在Windows上获取未在控制台中运行的Java进程的线程和堆转储...

    问题 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程.我想获得该子进程的线程/堆转储. 在Unix上,我可以做akill -3 但是在Windows AFAIK上获取线程转 ...

  7. java进程和线程_Java™ 教程(进程和线程)

    并发 计算机用户想当然地认为他们的系统一次可以做不止一件事,他们设想他们可以继续在文字处理器中工作,而其他应用程序则下载文件.管理打印队列和流音频,即使是单个应用程序通常也希望一次完成多个任务.例如, ...

  8. java进程、线程知识扩充

    进程 https://blog.csdn.net/hellokandy/article/details/87873649 1.一个进程至少得有一个线程,我们把这个线程称之为"主线程" ...

  9. 一次简单的JAVA进程到线程资源使用率异常分析

    1 前言导读 开发&测试人员在应用运行&测试过程中会遇到以下常见问题 在测试&调试过程中,应用会出现卡顿或接口响应失败问题,不知如何入手? 开发&测试人员在排查响应失败 ...

  10. Java进程和线程!!!(超级重要,用心整理)

    一.先来介绍一下软件 二.进程 三.线程 四.进程VS线程 五.线程是不是越多越好? 六.应该创建多少个合适?新建线程的最优场景(应该创建多少个线程最好): 一.先来介绍一下软件 1.定义: 计算机内 ...

最新文章

  1. php如何调用c接口无错版
  2. UVA 10487 Closest Sums
  3. C++ 容器 LIST VECTOR erase
  4. PHP经典算法 (转载)
  5. HTML <q> 标签的简单介绍
  6. loadrunner脚本录制为空的解决方法
  7. 深度剖析WinPcap之(二)——网络分析与嗅探的基础知识(4)
  8. List的isEmpty与==null的区别
  9. c语言分治法求众数重数_五大常见算法策略之——递归与分治策略
  10. ai怎么调界面大小_Illustrator怎么设置调整界面网格呢?
  11. C实现NV12转I420
  12. spring的核心模块
  13. 2014网络红人排行榜
  14. IDEA插件系列(105):IDEA Mind Map插件——IDEA思维导图
  15. Weston 纹理倒置(render-gl)
  16. 计算机系统之定量分析
  17. 阿里云服务器通用型实例g5 怎么样好不好?性能配置分析
  18. 将浏览器分段缓存视频合并的操作
  19. 统计学习:现代机器学习
  20. Redis安装(单机)

热门文章

  1. TensorFlow saved_model 模块
  2. 转 iOS socket
  3. dede自定义内容模型会员投稿显示不了
  4. android应用开发全程实录-你有多熟悉listview? getView重写 inflate使用
  5. j2ee中文编码问题的解决方法(ISO8859_1、GBK、UTF-8)
  6. 界面开发的推荐色值, dip,px,pt,sp 的区别
  7. 网站如何做分布式(集群)的大纲
  8. $CH0201$ 费解的开关
  9. P1955 [NOI2015]程序自动分析
  10. Android App性能测试之二:CPU、流量