java进程和线程

一、进程和线程的区别

1,进程和线程都有三种基本状态:就绪,运行,阻塞

2,从资源的角度讲:进程是拥有资源的基本单位,线程可以共享其隶属进程的系统资源。

3,从调度的角度讲:线程是cpu调度的基本单位。

4,从系统开销的角度讲:进程由程序、数据、进程控制块三部分组成。每次创建进程,系统都要为之分配或回收资源,如内存、io等。

线程由线程ID、当前指令指针、寄存器集合和堆栈等组成,线程切换只需要保存和设置少量寄存器变量,因此系统开销小。

5,从通信方面:进程通信需要依靠操作系统,而线程可以直接读写进程数据段(全局变量)来进行通信。

进程通信可以采用的方法有:管道、信号、信号量、消息队列、共享内存、状态变量、套接字(socket)<不同机器之间>

线程通信貌似也有类似的一些东西

二、java中多线程的实现方式

1,线程创建

1.1继承Thread

1)定义Thread的子类,实现run()方法

2)创建Thread子类的对象  [创建之后,线程处于新建状态]

3)调用线程对象的start方法  [线程处于就绪状态]

1.2实现runnable或者callable

1)定义类,实现runnable接口,重写run方法

2)创建上述类类的对象  [创建之后,线程处于新建状态]

3)不直接调用上述对象的start方法,而是将其作为target。new Thread(对象).start()  [线程处于就绪状态]

2,控制线程的相关方法

1)join 让一个线程等待另一个线程完成。调用后,当前线程阻塞,直到被调用的线程执行结束。

2)sleep让线程休眠,由运行态进入阻塞态。

3)yield让线程重新调度,有运行态进入就绪态。

3,线程同步

1)同步代码块,利用Synhronized(obj){}修饰一段代码

2)同步方法,将方法使用Synhronized修饰

3)同步锁Lock,和同步方法比较类似,只是同步锁显示使用Lock对象作为同步锁

4,线程通信

1)全局变量

2)使用Object类的三个方法:该方法有同步监视器对象调用

wait:导致当前进程等待

notify:唤醒在该同步监视器上等待的进程(随机选一)

notifyAll:唤醒在该同步监视器上等待的所有进程

java进程和线程

时间: 2024-11-10 10:22:19

java进程和线程的相关文章

java进程与线程

什么是进程,什么是线程 系统要做一件事,运行一个任务,所有运行的任务通常就是一个程序: 每个运行中的程序就是一个进程,这一点在任务管理器上面可以形象的看到. 当一个程序运行时,内部可能会包含多个顺序执行流,每个顺序执行流就是一个线程. 关于进程的特性 独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间.在没有经过进程本身运行的情况下是不能访问其中的内容的. 动态性:进程与程序的区别在于,程序是静态的,进程是动态的.程序只是一个静态的指令集合,而进程是一

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:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问