当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
Java语言中使用OpenMP
发布时间:2010/5/21 16:03:18 来源:城市学习网 编辑:ziteng
  从去年年中,开始学习Java,主要是维护公司用Java编写的服务器软件。目前,该服务器软件遇到一个问题,在下载大文件时,如果同时下载的用户很多,服务器软件工作会出现异常,有的用户无法下载。服务器硬件基本上都是多核处理器,所以,如果能在Java语言中使用并行编程技术,使用OpenMP,可能会提高服务器软件的性能。
  今天,测试了一下,Java语言中也可以使用OpenMP。以下是详细测试过程:
  1. 下载jomp1.0b.jar
  http://www2.epcc.ed.ac.uk/computing/research_activities/jomp/index_1.html
  2. 将jomp1.0b.jar部署到JDK的lib下,然后追加到CLASSPATH。我用的JDK版本为1.6.0_19(最新JDK为1.6.0_20)。
  也可以不追加到系统变量,而是直接解压后当作应用类使用。
  3. 编写测试代码TestJavaOpenMP.jomp。扩展名必须为jomp。
  import java.util.*;
  public class TestJavaOpenMP
  {
  public static void main(String[] agrs)
  {
  int i;
  //omp parallel for
  for(i = 0; i < 20; i++)
  {
  System.out.println("i = " + i);
  }
  }
  }
  4. 由jomp 生成java文件:
  java jomp.compiler.Jomp TestJavaOpenMP。(这里不带jomp扩展名)
  生成TestJavaOpenMP.java文件。
  5. 编译TestJavaOpenMP.java:
  java TestJavaOpenMP.java. 生成TestJavaOpenMP.class文件
  6. 运行:
  java -Djomp.threads=2 TestJavaOpenMP [NextPage]   一个运行结果:
  i = 0
  i = 10
  i = 1
  i = 2
  i = 11
  i = 12
  i = 3
  i = 13
  i = 14
  i = 4
  i = 15
  i = 5
  i = 16
  i = 6
  i = 17
  i = 7
  i = 18
  i = 8
  i = 9
  i = 19
  java -Djomp.threads=4 TestJavaOpenMP
  一个运行结果:
  i = 15
  i = 0
  i = 10
  i = 5
  i = 11
  i = 1
  i = 16
  i = 2
  i = 12
  i = 6
  i = 13
  i = 14
  i = 3
  i = 17
  i = 18
  i = 19
  i = 4
  i = 7
  i = 8
  i = 9
  可以看到,该运行结果类似C/C++语言中的结果。是否真的在多核上运行,需要对比一下运行时间才能知道。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved