java调用外部进程的blog和一个例子, 找到的写得比较详细的博客
http://jiangshuiy.iteye.com/blog/1674235
可以采用select for update nowait,实现对同一个任务打包的并发控制
http://tech.ccidnet.com/art/1105/20080130/1358017_1.html
文件下载
wget -O photo.jpg http://uuoffsxxxxf
package test; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; public class JavaExecCmd { public static void main(String args[]) throws Exception{ execp("rm -rf /opt/cafe/python",null); execp("mkdir -p /opt/cafe/python",null); writeContent("print('helloworld')","/opt/cafe/python/hello.py"); writeContent("print(''')","/opt/cafe/python/hello_err.py"); execp("ls",new File("/opt/cafe/python")); //调用返回了正确的结果 execp("python hello.py",new File("/opt/cafe/python")); //调用出现了异常 execp("python hello_err.py",new File("/opt/cafe/python")); } static void writeContent(String content,String fpath) throws IOException{ FileOutputStream fout=new FileOutputStream(fpath); fout.write(content.getBytes()); fout.close(); } public static void execp(String cmd, File dir) throws IOException{ ExecResult er=exec(cmd,dir); System.out.println("exec command:" +cmd); System.out.println(er); System.out.println(); System.out.println(); } public static ExecResult exec(String command, File dir) throws IOException { ExecResult ret=new ExecResult(); Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(command, null, dir); BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream())); String line=null; while((line=input.readLine()) != null) { ret.output+=line+"\n"; } input = new BufferedReader(new InputStreamReader(pr.getErrorStream())); while((line=input.readLine()) != null) { ret.errout+=line+"\n"; } try{ ret.code = pr.waitFor(); } catch(InterruptedException e){ ret.code=-1; } return ret; } /** * 执行返回的数据结构 */ static class ExecResult{ //外部程序返回的错误码,0表示执行成功 int code; //外部程序的标准输出stdout String output=""; //外部程序的标准错误输出stderr String errout=""; public String toString(){ return "code:"+code+",output:"+output+",errout:"+errout; } } }