java进程与线程

什么是进程,什么是线程

系统要做一件事,运行一个任务,所有运行的任务通常就是一个程序;

每个运行中的程序就是一个进程,这一点在任务管理器上面可以形象的看到。

当一个程序运行时,内部可能会包含多个顺序执行流,每个顺序执行流就是一个线程。

关于进程的特性

独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间。在没有经过进程本身运行的情况下是不能访问其中的内容的。

动态性:进程与程序的区别在于,程序是静态的,进程是动态的。程序只是一个静态的指令集合,而进程是一个正在系统中运行的指令集合。有了时间的概念,如生命周期;

并发性:进程之间,交替着执行。

线程,一个顺序执行流;

它是进程的组成部分,一个进程可以有多个线程。

关于线程的特性,或是它的优势

1、进程之间不能共享内存,单线程之间共享内存非常的容易

2、系统创建进程需要为该进程重新分配系统资源,但创建线程的代价很小。因此多线程的实现多任务并发比多进程实现并发的效率高

3、java语言内置多线程功能支持,而不是单纯的作为底层操作系统的调度方式

总结:

一个程序运行至少一个进程,一个进程里面至少包含一个线程,线程是进程的组成部分。

线程相对于进程而言,很强大了,做到了资源的共享,资源的损耗降低,人为的手工控制程序的运行。

时间: 2024-11-03 21:58:42

java进程与线程的相关文章

java进程和线程

一.进程和线程的区别 1,进程和线程都有三种基本状态:就绪,运行,阻塞 2,从资源的角度讲:进程是拥有资源的基本单位,线程可以共享其隶属进程的系统资源. 3,从调度的角度讲:线程是cpu调度的基本单位. 4,从系统开销的角度讲:进程由程序.数据.进程控制块三部分组成.每次创建进程,系统都要为之分配或回收资源,如内存.io等. 线程由线程ID.当前指令指针.寄存器集合和堆栈等组成,线程切换只需要保存和设置少量寄存器变量,因此系统开销小. 5,从通信方面:进程通信需要依靠操作系统,而线程可以直接读写

java中的进程与线程及java对象的内存结构【转】

原文地址:http://rainforc.iteye.com/blog/2039501 1.实现线程的三种方式: 使用内核线程实现 内核线程(Kernel Thread, KLT)就是直接由操作系统内核支持的线程,这种线程由内核来完成线程切换,内核通过操作调度器对线程进行调度,并负责将线程的任务映射到各个处理器上.程序一般不会直接去使用内核线程,而是去使用内核线程的一种高级接口——轻量级进程(Light Weight Process,LWP),轻量级进程就是我们通常意义上所讲的线程,由于每个轻量

Java并发3-多线程面试题

1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速. 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务.不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间.别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据. 3) 如何在Java中实现线程? 在语言层面有两种方式.java.lang.Thread

如何排查java进程cpu100%的问题

cpu是时分(time division)的,操作系统里有很多线程,每个线程的运行时间由cpu决定,cpu会分给每个线程一个时间片,时间片是一个很短的时间长度,如果在时间片内,线程一直占有,则是100%:我们应该意识到,cpu运行速度很快(主频非常高),除非密集型耗费cpu的运算,其它类型任务都会在小于时间片的时间内结束. 产生CPU100%的原因: 某一程序一直占用CPU是导致CPU100%的原因,大概有以下几种情况: 1.Java 内存不够或溢出导致GC overhead问题, GC ove

java进程占用cpu过高分析是哪些线程

拿hbase基准测试列子来分析哪些线程使用比较高的cpu,环境是linux,基准测试命令: hbase org.apache.hadoop.hbase.PerformanceEvaluation  --rows=500000 --nomapred --presplit=5 --writeToWAL=true randomWrite 5 首先查看占用cpu最高的进程和线程id,执行命令: [[email protected] logs]$ ps Hh -eo pid,tid,pcpu | sort

Java面试18|关于进程、线程与协程

1.IPC(Inter-Process Communication,进程间通信)与线程通信的几种方式 # 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系通常是指父子进程关系.# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信.# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问.它常作为一种锁机制,防止某进程正在访问共享资源

Java并发编程:进程和线程

.title { text-align: center } .todo { font-family: monospace; color: red } .done { color: green } .tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal } .timestamp { color: #bebebe } .timestamp-kwd

java中进程与线程--三种实现方式

一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为进程. 进程的三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问其他进程的地址空间. 2:

Java中的进程和线程

 Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为进程. 进程的三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问