Java笔记---易混淆的概念(二:线程、进程、任务)

原创 2016年03月05日 22:05:37

一、前言

在《Java编程思想》并发编程一章学习中,遇到3个概念,也就是线程、进程和任务。对这几个概念的理解比较模糊,因此花了点时间,查了下关于这几个概念的信息,总算是理解了。

二、概念区分

咱就按一一介绍下这些个概念。

2.1 进程

  1. 常常被定义为运行中的程序。
  2. 按Java编程思想上的概念来说,进程是运行在它自己的地址空间内的自包容的程序
  3. 一个程序可以有多个启动进程。
  4. 一个程序至少有一个进程,一个进程至少有一个线程
  5. 在OS中,把进程作为资源分配的基本单位

进程
从图可以看到,以Chrome浏览器为例,一个Chrome浏览器程序就启动了多个进程,从资源管理器就可以看到进程各自的PID。记住进程可以是来自各种程序、系统和应用程序的单独进程,也可以是来自被分解为很多进程的应用或程序

2.2 线程

  1. 轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元
  2. 在OS中,把线程作为独立运行和独立调度的基本单位
  3. 线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源
  4. 线程存在于进程之中,一个进程有若干个线程
  5. 线程可以驱动任务

2.3 任务

任务是这三个概念中最抽象的。记住:任务 ≠ 进程 ≠ 线程。那么任务是什么?

  1. 它是一个一般性的术语,指由软件完成的一个活动。
  2. 一个任务既可以是一个进程, 也可以是一个线程。

所以,多任务 ≠ 多进程 ≠ 多线程,三者抽象的级别根本就不一样。

三、进程与线程的区别

3.1 独立性

  1. 对于进程:各进程是独立的,各自拥有内存空间,一个进程所拥有的数据和变量只属于它自己
  2. 对于线程:同一进程中的多个线程之间是共享同一块内存空间,共享相同的代码和全局数据(但每个线程各有其自己的堆栈,由于堆栈是每个线程一个,因此局部变量对每一线程来说是私有的

3.2 是否可独立执行

进程可以独立运行,但线程不能够独立执行。为什么呢?
原因:进程拥有完备的数据空间和代码空间,而线程比进程更小,基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,因此线程必须必须依存在应用程序中。

一定要记住:虽然OS把线程作为独立运行和独立调度的基本单位,但是实际上线程并不能独立运行

3.3 上下文切换效率

线程上下文切换速度比进程上下文切换要快得多

版权声明:博客编写不易,转载时请注明出处,Thank you very much!

Java易混淆概念与重点知识积累 第三篇

String、StringBuffer和StringBuilder对比 String类是不可变类,任何对String的改变都会引发新的String对象的生成;StringBuffer则是可变类,任何对...
  • songkai320
  • songkai320
  • 2016年07月04日 20:29
  • 842

Java中线程和进程的一些概念的理解

今天复习熟悉了Java并发的一些概念。  程序:系统要完成的一个任务,就是一个程序;  进程:每个运行中的程序就是一个进程,Windows任务管理器上可以看到每一个进程,Linux下使用ps –e...
  • li12412414
  • li12412414
  • 2016年05月17日 16:06
  • 1729

Oracle中易混淆的几个概念

欢迎转载,转载请指明出处http://blog.csdn.net/hncsy403,谢谢 1.实例和数据库 实例包括我们为了运行数据库执行和分配的所有进程和内存结构 Oracle实例...
  • hncsy403
  • hncsy403
  • 2012年08月23日 11:32
  • 1968

JAVA面向对象访问的几个容易混淆点

1、一定分清楚几个概念,那就是对象,类型,变量。类型是存储到方法区的,对象是实例化类型的,是放在堆区,实际程序流程执行的基本数据类型和自定义对象引用则是存储在栈区,因为这些设计到内存机制,还有虚拟机一...
  • d_o_n_g2
  • d_o_n_g2
  • 2015年09月03日 07:45
  • 280

计算机易混淆概念(待续)

计算机网络1、IP地址(1)IP地址划分 (2)五类IP地址范围 (3)私有IP地址 10.0.0.0——10.255.255.255 172.16.0.0——172.31.25...
  • CorCplusplusorjava
  • CorCplusplusorjava
  • 2015年10月04日 10:57
  • 875

python 混淆点一

参考资料: 廖雪峰教程 list 和 tuple list和tuple是Python内置的有序集合,一个可变,一个不可变 list是一种有序的集合,可以随时添加和删除其中的元素。 索引正数从0...
  • wshlp123456
  • wshlp123456
  • 2016年03月21日 10:19
  • 266

进程、线程与多线程概念详解

一、概述 在windows中,每一个打开运行的应用程序或后台程序,比如运行中的QQ、谷歌浏览器、网易云音乐、资源管理器等都是一个进程。我们感觉这些程序是“同时”运行的,但实际上,一个处理器同一时刻只...
  • zhangliangzi
  • zhangliangzi
  • 2016年04月24日 21:33
  • 2329

进程和线程的概念、区别与联系

进程概念   进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放...
  • u010624033
  • u010624033
  • 2014年11月13日 16:03
  • 2044

Java易混淆知识点

1.    数组有没有length()这个方法? String有没有length()这个方法?      2.     String s = new String("xyz");创建了几个St...
  • zzcchunter
  • zzcchunter
  • 2011年11月05日 10:33
  • 1388

作业、任务、进程、线程的区别

发信人: Crazyrebel (爱后余生), 信区: Program标  题: Re: 作业、任务、进程、线程的区别发信站: 一网深情 (Tue Apr 30 22:14:42 2002) , 站内...
  • mabaocheng
  • mabaocheng
  • 2005年12月14日 14:12
  • 4419
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java笔记---易混淆的概念(二:线程、进程、任务)
举报原因:
原因补充:

(最多只允许输入30个字)