不同操作系统下Java线程的区别
来源:互联网 发布:快压for mac 编辑:程序博客网 时间:2024/05/17 07:26
java的线程概念与操作系统的线程概念是不同的,java的线程概念差不多与windows线程概念一致,但是java既然目标是跨平台语言,那么它的线程机制概念是在所有平台上都是一样的,但是实际实现又不是如此,这要从进程与线程的概念中谈起:
首先在windows系列系统中,进程所拥有的内存空间都是独立的,此进程所持有的内存其它进程是不可以直接访问的,而且在windows系统内部一个进程就是一个运行的运用程序,而为了解决应用程序内部的并行问题便有了线程的概念,线程没有自我独立的内存空间,在一个进程中所有的线程共享这个进程所持有的内存空间。
而在某些Unix系统当中,进程所持有的内存空间是可以被其他进程进行访问的,而且一个运用程序可能不止一个进程,这样的系统没有线程的概念,运用的并行问题有多个进程协调来解决。
java为了实现平台无关性,必须解决这样一个问题,因此java建立了一套自己的进程与线程机制,这套机制与windows系统的颇为相似,但是底层实现确实根据不同平台的机制进行实现,比如windows下的线程机制就是利用windows本身的线程机制加上某些改进进行处理的,而某些没有线程的Unix系统则是用进程来替代线程进行实现的,然后在其中确立一个主进程来替代自身进程。虽然这样的实现解决了大部分的线程平台无关性,但是也有些无法解决的,比如线程优先级,windows下线程是有优先级的,但是某些Linux系统,某些Unix系统,进程与线程直接不区分优先级,因此优先级在每个系统下的表现形式就不一样,例如低优先级的进程可能在windows下被饿死,但是在linux下,根本就无法感觉它优先级较低,还有,在建立一个线程与杀死一个线程运用所带来的开销也会不同,在windows下建立或杀死线程可能是不需要什么开销的,但是在没有线程概念的进程行操作系统中,杀死或者建立线程可能带来巨大开销
首先在windows系列系统中,进程所拥有的内存空间都是独立的,此进程所持有的内存其它进程是不可以直接访问的,而且在windows系统内部一个进程就是一个运行的运用程序,而为了解决应用程序内部的并行问题便有了线程的概念,线程没有自我独立的内存空间,在一个进程中所有的线程共享这个进程所持有的内存空间。
而在某些Unix系统当中,进程所持有的内存空间是可以被其他进程进行访问的,而且一个运用程序可能不止一个进程,这样的系统没有线程的概念,运用的并行问题有多个进程协调来解决。
java为了实现平台无关性,必须解决这样一个问题,因此java建立了一套自己的进程与线程机制,这套机制与windows系统的颇为相似,但是底层实现确实根据不同平台的机制进行实现,比如windows下的线程机制就是利用windows本身的线程机制加上某些改进进行处理的,而某些没有线程的Unix系统则是用进程来替代线程进行实现的,然后在其中确立一个主进程来替代自身进程。虽然这样的实现解决了大部分的线程平台无关性,但是也有些无法解决的,比如线程优先级,windows下线程是有优先级的,但是某些Linux系统,某些Unix系统,进程与线程直接不区分优先级,因此优先级在每个系统下的表现形式就不一样,例如低优先级的进程可能在windows下被饿死,但是在linux下,根本就无法感觉它优先级较低,还有,在建立一个线程与杀死一个线程运用所带来的开销也会不同,在windows下建立或杀死线程可能是不需要什么开销的,但是在没有线程概念的进程行操作系统中,杀死或者建立线程可能带来巨大开销
- 不同操作系统下Java线程的区别
- mysql在不同操作系统下的区别
- 不同操作系统下的换行
- java获取不同操作系统下的路径分隔符
- 关于jvm的线程调度在不同操作系统下的实现说明
- 操作系统(十)-----不同操作系统中线程的实现方式
- Java 中不同情况下的线程终止
- 不同操作系统换行符的区别
- java不同容器不同操作系统下中文问题解决方法
- [转]java不同容器不同操作系统下中文问题解决方法
- 【LibUIDK界面库系列文章】Edit控件在不同操作系统及编译环境下的区别
- 不同操作系统下记事本的换行符号
- 不同操作系统下的iSCSI Initiator
- 不同操作系统下的换行符
- 不同操作系统下webstorm的使用---转载
- 不同操作系统下域名解析文件是不同的
- 【操作系统】进程和线程的区别
- 【操作系统】进程与线程的区别
- 条件编译
- Oracle闪回flashback总结
- Anagrams
- C#:在用VS2005开发WinCE6.0应用程序时,部署报错的处理
- ubuntu 下设置git 命令的字符颜色
- 不同操作系统下Java线程的区别
- at
- 非负矩阵分解中基于L1和L2范式的稀疏性约束
- Install Eclipse
- presentModalViewController和presentViewController的区别
- Json-framework for IOS
- .ICO && .CUR 格式文件解析 资料整理
- 搭oa测试环境
- 浅议 Dynamic_cast 和 RTTI