线程和进程有什么差别?Java多线程机制有什么特点?
2012-11-24 07:55
501 查看
最近面试,很多公司在招人的简章上几乎都有这个关于 java多线程、线程和线程、进程和进程的通信机制 理解 这个要求! 特此做了一个小总结,起码下次面试自己也能数落个123出来啊。
线程和进程很相象,它们都是程序的一个顺序执行序列,但两者又有区别。进程是一个实体,每个进程有自己独立的状态,并有自己的专用数据段。创建进程时,必须建立和复制其专用数据段。线程则互相共享数据段。同一个程序中的所有线程只有一个数据段,所以,创建线程时不必重新建立和复制数据段。由于数据段建立和复制方面的差异,使线程的建立和线程间的切换速度大大优于进程,另一方面,线程又具备进程的大多数优点。
下面的例子可以说明线程和进程的区别。
假设银行系统办理存款和取款手续,将帐本看成数据段。如果用进程这种机制办,那么,当储户去存/取款时,银行应先把账本复制一遍,为储户建立一个独立的账本再结算。如果按线程机制办,那么,银行里所有的出纳员都用同一个账本,储户来办存/取款时,也从这个账本直接结算。用线程机制省去了数据段复制这一步显然会使线程独具特点。
但是,由于多个线程共享一个数据段,所以,也出现了数据访问过程的互斥和同步问题,这使系统管理功能变得相对复杂。
总的说,一个多线程系统在提高系统的输入/输出速度、有效利用系统资源、改善计算机通信功能以及发挥多处理器硬件功能方面显示很大优势。因此,一些最新的操作系统如 Windows 95,Windows 98和Windows NT等都提供了对多线程的支持。但是,在多线程操作系统下设计多线程的程序仍然是一个比较复杂和困难的工作。由于需要解决对数据段的共享,所以,原则上应该从程序设计角度采用加锁和释放措施,稍有不慎,便会使系统产生管理上的混乱。而Java从语言一级提供对多线程的支持,这样,可由语言和运行系统联合提供对共享数据段的管理功能和同步机制,使得多线程并行程序设计相对比较容易。
线程和进程很相象,它们都是程序的一个顺序执行序列,但两者又有区别。进程是一个实体,每个进程有自己独立的状态,并有自己的专用数据段。创建进程时,必须建立和复制其专用数据段。线程则互相共享数据段。同一个程序中的所有线程只有一个数据段,所以,创建线程时不必重新建立和复制数据段。由于数据段建立和复制方面的差异,使线程的建立和线程间的切换速度大大优于进程,另一方面,线程又具备进程的大多数优点。
下面的例子可以说明线程和进程的区别。
假设银行系统办理存款和取款手续,将帐本看成数据段。如果用进程这种机制办,那么,当储户去存/取款时,银行应先把账本复制一遍,为储户建立一个独立的账本再结算。如果按线程机制办,那么,银行里所有的出纳员都用同一个账本,储户来办存/取款时,也从这个账本直接结算。用线程机制省去了数据段复制这一步显然会使线程独具特点。
但是,由于多个线程共享一个数据段,所以,也出现了数据访问过程的互斥和同步问题,这使系统管理功能变得相对复杂。
总的说,一个多线程系统在提高系统的输入/输出速度、有效利用系统资源、改善计算机通信功能以及发挥多处理器硬件功能方面显示很大优势。因此,一些最新的操作系统如 Windows 95,Windows 98和Windows NT等都提供了对多线程的支持。但是,在多线程操作系统下设计多线程的程序仍然是一个比较复杂和困难的工作。由于需要解决对数据段的共享,所以,原则上应该从程序设计角度采用加锁和释放措施,稍有不慎,便会使系统产生管理上的混乱。而Java从语言一级提供对多线程的支持,这样,可由语言和运行系统联合提供对共享数据段的管理功能和同步机制,使得多线程并行程序设计相对比较容易。
相关文章推荐
- 牛客网Java刷题知识点之什么是进程、什么是线程、什么是多线程、多线程的好处和弊端、多线程的创建方式、JVM中的多线程解析、多线程运行图解
- [java多线程]进程和线程
- java进程、线程、多线程以及线程安全问题
- 什么是线程?它与进程的区别?为什么要使用多线程?
- 进程与线程(Java多线程总结一)
- Java基础学习5_多线程(线程间通信--等待唤醒机制)
- 1、Java多线程基础:进程和线程之由来
- 黑马程序员--读写字节数组,随机读写流,集合IO的思维导图,多线程部分,单例设计模式,线程和进程的概念,Java中的线程的创建方式,线程的随机性,线程的状态图,多线程操作共享数据的安全性,死锁
- 【Java多线程】浅谈多线程机制(二)之正确停止线程
- java并发-多线程之线程和进程的区别(1)
- 从头认识java-18.2 基本的线程机制(6)-使用构造器或者内部类来实现多线程的编码变体
- 进程与线程。js是什么运行机制?node.js是什么运行机制?
- java 多线程 1 线程 进程
- Java多线程之线程间通信--等待(wait)/通知(notify)机制,等待/通知之交叉备份实例
- (一)java并发编程--计算机中的进程和线程(多进程和多线程)
- 【深入分析JAVA多线程】(1)详解进程、线程以及线程安全
- java多线程系列----------- 基本的线程机制(一)
- Java多线程基础:进程和线程之由来
- java多线程——线程间通信之线程等待唤醒机制
- java多线程机制三--线程的常用方法