【发布时间】:2016-01-26 17:26:48
【问题描述】:
我编写了一个并发合并排序代码,默认设置为 5 个线程,数组长度为 1 000 000,我确保应用程序可以通过 ant start 从命令行启动。
现在我的问题是我还必须提供一个小的命令行处理来通过控制台的命令参数覆盖最大线程数和数组长度。
问题是我该如何做到这一点,为此我需要编辑我的主代码或 build.xml 还是只是一个命令,如转到 main,更改这个和那个?
主要看起来像这样:
public class Main {
public static void main(String[] args) throws InterruptedException {
int nThreads=5;
int[] original = new int[1000000];
for (int i=0; i<original.length; i++) {
original[i] = (int) (Math.random()*9);
}
Mergesorts worker = new Mergesorts(original,nThreads);
System.out.println("ressource: 1 of 5 thread(s) used");
Thread w = new Thread(worker);
w.start();
w.join();
}}
这就是我的 build.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<project default="start" name="Mergesort-compile and run">
<target name="compile">
<javac includeantruntime="false" srcdir="./src" destdir="Mergesort" />
</target>
<target name="start" depends="compile">
<java classname="Main">
<classpath path="Mergesort"/>
</java>
</target>
【问题讨论】:
-
将线程号作为程序参数传递,然后从您的
args数组中获取它,将其解析为 int 并设置线程。