如何看待Java绿色线程的相关应用效果

如题所述

Java绿色线程到底是一个怎么回事呢?这些问题需要我们从本质中看问题 。下面我们就来看看Java绿色线程(Green Thread)是一个相对于操作系统线程(Native Thread)的概念 。

操作系统线程(Native Thread)的意思就是,程序里面的线程会真正映射到操作系统的线程,线程的运行和调度都是由操作系统控制的

Java绿色线程(Green Thread)的意思是,程序里面的线程不会真正映射到操作系统的线程,而是由语言运行平台自身来调度 。

当前版本的Python语言的线程就可以映射到操作系统线程 。当前版本的Ruby语言的线程就属于绿色线程,无法映射到操作系统的线程,因此Ruby语言的线程的运行速度比较慢 。

Java线程同步如何才能排除阻塞
Java线程函数关键代码详细讲述
Java线程同步引用基本代码介绍
Java线程控制权源代码的深入探讨
Java线程同步问题在实践中寻找答案

难道说,Java绿色线程要比操作系统线程要慢吗?当然不是这样 。事实上,情况可能正好相反 。Ruby是一个特殊的例子 。线程调度器并不是很成熟 。

目前,线程的流行实现模型就是Java绿色线程 。比如,stackless Python,就引入了更加轻量的绿色线程概念 。在线程并发编程方面,无论是运行速度还是并发负载上,都优于Python 。

另一个更著名的例子就是ErLang(爱立信公司开发的一种开源语言) 。

ErLang的Java绿色线程概念非常彻底 。ErLang的线程不叫Thread,而是叫做Process 。这很容易和进程混淆起来 。这里要注意区分一下 。

ErLang Process之间根本就不需要同步 。因为ErLang语言的所有变量都是final的,不允许变量的值发生任何变化 。因此根本就不需要同步 。

final变量的另一个好处就是,对象之间不可能出现交叉引用,不可能构成一种环状的关联,对象之间的关联都是单向的,树状的 。因此,内存垃圾回收的算法效率也非常高 。这就让ErLang能够达到Soft
Real Time(软实时)的效果 。这对于一门支持内存垃圾回收的语言来说,可不是一件容易的事情 。
温馨提示:答案为网友推荐,仅供参考
相似回答