点击这里给我发消息 点击这里给我发消息

高级技术分析:绿色和本地线程简单介绍

添加时间:2013-12-7
    相关阅读: 软件开发 软件 开发 技术 程序 系统 平台

  Java
  
  There are two versions of the Java Development Kit (JDK) installed.
  
  The first is the standard Java 1.1.x version, and the other is the new Java 2 (1.2.x) version.
  
  There are two threading types available with each of the JDK's: green and native.
  
  Green threads implement user level threads, and use only a single OS thread.
  
  Native threads use the OS's threading system, and use one OS thread per java thread.
  
  The threading modes can be selected by using the -green or -native flags when executing java.
  
  JDK Versions Available
  ================================================================================
  Flavor Version RPM Package Location (JAVA_HOME) Default thread mode
  
  java 1.1.8_v1 jdk /usr/local/jdk118_v1  green
  
  java2 1.2.2_RC3 jdk2 /usr/local/jdk1.2.2 native
  
  Solaris 相关
  ================================================================================
  结构
  
  命令行标志:
  
  jdk-tool [-green | -native] options...
  
  % setenv THREADS_FLAG [-green | native]
  
  缺省状态是绿线程。 如果指定了命令行标志,它将覆盖 THREADS_FLAG 环境变量的设置。
  
  如何确定使用哪一种线程选项?
  
  Solaris Java 开发工具包有两种线程处理软件的实现。
  
  缺省的线程实现叫作绿线程;还可以用一种本地线程实现。
  
  本地线程在某些方面优于缺省的绿线程实现,这要视计算环境而定。 以下是使用本地线程的某些好处:
  
  如果在多处理器的环境中运行 Java 代码,则 Solaris 内核程序可在并行处理器上调度本地线程,以增强性能。 相比之下,绿线程只在用户级上存在,且没有被操作系统映射到多内核线程中。并行机制产生的增强功能不能用绿线程来实现。
  
  本地线程实现能对使用 Solaris 本地线程的 C 库进行调用,但该库却不能用在绿线程中。虚拟机使用本地线程时,它能避免某些低效率的 I/O 系统调用的重复映射,但用绿线程时这些重复映射是必需的。
  
  在某些场合中,使用缺省的绿线程可能更恰当些。 非多线程安全 (MT-safe) 的平台相关代码可能不能与本地线程一起正确地运行。
  
  一般来说,如果不直接使用本地 Solaris 线程机制,则需用 -D_REENTRANT 选项来编译平台相关代码,以确保它们能在线程化环境中正常运行。 可能还需要用到某些 Solaris 接口的可重入版本。
  
  有关 Solaris 多线程编程的专门信息,可查阅“Solaris 软件开发人员问答篇的多线程编程指南”。该信息也可在 docs.sun.com 站点找到。
  
  在绿线程下运行的代码的线程同步错误可能会被隐藏,而在本地线程下运行时却可能会显现出来。如果您的代码要在两种不同的线程包下运行,则必须考虑这种可能性。
  
  如何指定选择的线程选项?
  
  缺省状态下, Solaris Java 开发工具包的所有工具都使用绿线程。要指定使用某种本地线程,可以通过设置 THREADS_FLAG 环境变量来实现:
  
  % setenv THREADS_FLAG native
  
  将 THREADS_FLAG 设为 green 值,即可恢复使用绿线程:
  
  % setenv THREADS_FLAG green
  
  也可以用 JDK 工具中的 -native 或 -green 命令行标志来选择线程选项。线程标志必须是命令行上指定的第一个选项。
  
  命令行标志的用法如下例所示:
  
  % java -native mypkg.MyClass
  
  % appletviewer -green MyApplet.html
  
  命令行标志覆盖 THREADS_FLAG 环境变量的设置。
咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册