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


  本文标签: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(软实时)的效果  。这对于一门支持内存垃圾回收的语言来说,可不是一件容易的事情  。