java 启动线程 异步_如何在java中使用线程异步运行命令行

这篇博客讲述了作者作为一个Java新手,在尝试使用Java运行命令行程序时遇到的问题。作者首先在DOS环境下测试了命令行,然后尝试在Java程序中通过Runtime.exec()方法实现,但发现程序只显示光标闪烁,未能正确执行。作者意识到可能需要使用线程异步技术,并希望在任务完成后实现回调或返回值。博客中提供了部分代码示例,寻求关于如何在Java中使用线程异步运行命令行的建议和示例。
摘要由CSDN通过智能技术生成

我是java新手。我负责编写Java程序来运行命令行。我在DOS提示符下测试了命令行,因为我还没有访问Linux的盒子。它工作得很好。有关完整的命令行语法,请参阅下面的PROGRAM。该作业将需要6个输入文件并生成一些输出文件。接下来,我尝试创建一个类并使用getruntime和过程来处理这个工作。即使它编译没有错误,但是当我运行它只显示光标闪烁...我想我需要使用线程异步技术。请提供一些建议,因为我没有足够的时间来完成这些项目。我还想在作业完成时实施回调或返回值。一个例子将不胜感激。由于如何在java中使用线程异步运行命令行

import java.io.*;

public class RunJob {

// public static final String PROGRAM = "c:\\wrk\\java.exe Hello";

//one command line below

public static final String PROGRAM = "c:/java.exe -cp \"wrk/jmp.jar;wrk/colt.jar\" gov.lanl.yadas.reliability.UltimateMissileReliabilityModel 10000 \"wrk/\" x1.dat x2c.dat x3.dat x4.dat x5.dat x6.dat true";

// Set to true to end the loop

static boolean done = false;

public static void main(String argv[]) throws IOException {

BufferedReader is;

String line;

String returnMsg = "Start ";

final Process p = Runtime.getRuntime().exec(PROGRAM);

System.out.println("start");

Thread waiter = new Thread() {

public void run() {

try {

p.waitFor();

} catch (InterruptedException ex) {

System.out.println("InterruptedException");

return;

}

System.out.println("Program terminated!");

done = true;

}

};

waiter.start();

is = new BufferedReader(new InputStreamReader(p.getInputStream()));

while (!done && ((line = is.readLine()) != null))

{

System.out.println(line);

returnMsg = returnMsg + line;

}

System.out.println(returnMsg);

System.out.println("End");

return;

}// main

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值