我是Java窗口应用程序的新手。我需要创建一个运行脚本的Java工具。脚本像- .txt file
一样运行,并提供以下输出:
line 1
line 2
line 3
and so on....
我需要Java程序来执行以下步骤:
我想在这里使用线程concpt。我希望子线程处理1和2进程并将byte[]
返回给主线程。然后主程序将处理该字节数组。
我可以使用线程,但返回值有问题。线程如何将每行返回byte[]
到主线程?主线程如何以同步方式接收此byte[]
数组?
答案 0 :(得分:0)
从线程返回值的最简单方法是使用ExecutorService
和Future
类。您可以将任意数量的作业提交到线程池中。您还可以为每个作业添加更多线程或分叉线程。请参阅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;
}
});