JAVA 多进程与多线程的概念
来源:互联网 发布:ubuntu装gpu 编辑:程序博客网 时间:2024/05/22 00:15
多进程
Java编写程序都运行在在Java虚拟机(JVM)中,在JVM的内部,程序的多任务是通过线程来实现的。每用java命令启动一个java应用程序,就会启动一个JVM进程。在同一个JVM进程中,有且只有一个进程,就是它自己。在这个JVM环境中,所有程序代码的运行都是以线程来运行。一个JVM进程对应一个JAVA程序。一个java的应用程序对应于一个JVM实例,当一个java程序运行的时候,一个jvm实例就诞生了,为了验证我们的说法,我进行了以下小小的例子来验证我的说法:
app1:public class Test1 {public static void main(String[] args) throws InterruptedException { while (true) { System.out.println("application 1"); Thread.sleep(1000); }}}app2:public class Test2 { public static void main(String[] args) throws InterruptedException { while (true) { System.out.println("application 2"); Thread.sleep(1000); }}}
我们同时执行两个程序,当两个程序都运行的时候,我们打开windows的任务管理器,我们在程序中可以看到有两个java程序的实例:
javaw.exe
javaw.exe
当我们结束一个java程序的时候,其中的一个javaw.exe停止消失,说明了,每一个java程序对应一个jvm实例,都有自己的程序执行空间,每一个都有一套jvm虚拟机机制。
多线程
- Java线程的实现
- Thread类和大部分的java API有显著的差别,它关键方法声明为native的,这意味着该方法没有或者无法使用平台无关的手段来实现!
- 上面的问题表明,java线程的实现是依赖于线程的实现(操作系统);虚拟机只是将java的线程最终映射到操作系统的线程模型中,通过后者完成具体实现;
- 操作系统支持什么样的线程模型很大程度上决定了Java虚拟机的线程是怎么映射的;
- 线程的实现(操作系统)主要有3种方式:内核线程实现、用户线程实现、用户线程加轻量级进程实现
- 内核线程(KLT):(1:1)
- 直接由操作系统内核支持的线程,内核通过操纵调度器将线程的任务映射到各个处理器上;
- 程序一般不会直接去使用内核线程,而是去使用内核线程的一种高级接口——轻量级进程(LWP),即平时所说的线程;
- 轻量级进程和内核线程是一种一对一的线程模型;
- 缺点:系统调用代价高,因为需要在用户态和内核态之间来回切换;轻量级进程数量有限,因为LWP和内核线程是一对一的关系;
- 用户线程(UT)(N:1)
- 将线程的各种问题全部交给用户来解决,而且有时候无法通过代码解决一些问题;该实现基本已经被淘汰了
- 用户线程 and LWP(N:M)
- 即上面的结合体;
- 具备了用户线程的:系统调度代价低,支持大规模用户线程并发的功能
- 有具备了内核线程:任务调用,解决线程间阻塞问题
- 评价:可以说是一种比较折衷的方法;
Reference:
http://blog.sina.com.cn/s/blog_ac843e3301016j5p.html
http://blog.csdn.net/wangxingbao4227/article/details/6758880
《深入理解Java虚拟机》
0 0
- JAVA 多进程与多线程的概念
- 多线程与多进程的相关概念
- 多线程与多进程服务器以及池的概念
- Java多线程(一)、理解进程与多线程的概念及关系
- Java多线程学习总结——线程与进程的概念、区别与联系
- java多进程与多线程
- java--多线程的概念与创建
- 【windows编程--进程与线程】多线程的概念
- 理解进程与多线程的概念及关系
- 多核 多线程 进程的概念
- 多线程和进程的概念
- [疯狂Java]多线程:进程和线程的概念
- Java进程与多线程
- Java 多线程的概念
- 进程、线程与多线程概念详解
- 多线程(一)进程与线程概念
- 浅析Java进程与多线程的差别
- 进程与线程,java多线程的应用
- A Famous Music Compose
- hdu 3460 Ancient Printer 解题报告
- [BZOJ3611] [Heoi2014]大工程
- 【VS开发】内存映射文件3
- Android使用Messenger进行Service IPC通信分析
- JAVA 多进程与多线程的概念
- HTML5移动端手机网站开发流程
- uva 11300(分金币)
- [JAVA].FirstStep 杨辉三角形
- Android:Animation专题:1.alpha、scale、translate、rotate、set的xml属性及用法
- TF-IDF及其算法
- Linux下编译安装MySQL5.6
- 字符设备驱动概述
- 从setContentView方法分析Android加载布局流程