-4

我是 Java 窗口应用程序的新手。我需要制作一个运行脚本的 Java 工具。该脚本运行方式类似- .txt file,并提供以下输出:

line 1   
line 2  
line 3
and so on....  

我需要 Java 程序来执行以下步骤:

  1. 检查每一行语法是否正确
  2. 如果行是正确的,用这一行做一个 byte[]
  3. 处理字节[]数组

我想在这里使用线程概念。我希望该子线程处理 1 和 2 进程并将 a 返回byte[]到主线程。然后主程序将处理这个字节数组。

我可以使用线程,但返回值有问题。线程如何将byte[]每一行返回到主线程?主线程如何byte[]以同步方式接收这个数组?

4

1 回答 1

0

从线程返回值的最简单方法是使用ExecutorServiceFuture类。您可以将任意数量的作业提交到线程池中。您还可以为每个作业添加更多线程或分叉一个线程。请参阅 中的其他方法Executors

例如:

// create a thread pool
ExecutorService threadPool = Executors.newFixedThreadPool(2);
// submit a job to the thread pool maybe with the script name to run
Future<byte[]> future1 = threadPool.submit(new MyCallable("scriptFile1.txt"));
// waits for the task to finish, get the result from the job, this may throw
byte[] result = future1.get();

public class MyCallable implements Callable<byte[]> {
    private String fileName;
    public MyCallable(String fileName) {
        this.fileName = fileName;
    }
    public byte[] call() {
        // run the script
        // process the results into the byte array
        return someByteArray;
    }
});
于 2012-05-09T17:34:53.743 回答