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

开发 后端
Java绿色线程需要我们注意的东西有很多,其实在使用的时候我们就在一直不断的完善相关的使用。希望大家有所收获。

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

责任编辑:张浩 来源: 博客园
相关推荐

2010-03-10 19:34:45

Python主线程

2010-03-16 18:40:59

Java多线程编程

2010-03-16 18:24:44

Java线程模型

2009-12-03 20:15:13

模块化路由器

2010-03-18 15:31:13

Java创建线程

2009-09-01 17:15:42

C#多线程应用

2009-06-11 11:17:59

Java多线程

2009-03-11 11:10:15

JavaJava开发线程

2009-01-12 09:49:03

Java线程多线程thread

2009-11-19 15:14:43

路由器系统

2010-03-16 17:52:27

Java多线程信号量

2010-03-17 19:24:38

Java多线程循环

2010-08-03 17:30:07

2016-06-21 10:40:54

云计算AWS

2016-06-17 10:35:20

云计算运维

2010-03-16 10:50:21

Java多线程服务器

2018-12-17 11:22:05

移动芯片网络

2009-02-19 14:27:00

2023-10-08 08:09:16

数据库性能服务器

2019-02-20 13:08:48

CIOIT转型
点赞
收藏

51CTO技术栈公众号