一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java執行bat命令碰到的阻塞問題的解決方法

java執行bat命令碰到的阻塞問題的解決方法

2019-11-03 17:51java教程網 JAVA教程

這篇文章主要介紹了java執行bat命令碰到的阻塞問題的解決方法,有需要的朋友可以參考一下

使用Java來執行bat命令,如果bat操作時間過長,有可能導致阻塞問題,而且不會執行bat直到關閉服務器。
如:

復制代碼代碼如下:

Runtime r=Runtime.getRuntime();  
        Process p=null;  
        try{  
            String path = "D:/test.bat";  
     p = r.exec("cmd.exe /c  "+path);  
     p.waitFor();  
 }catch(Exception e){   
     System.out.println("運行錯誤:"+e.getMessage());  
     e.printStackTrace();   
}  

 

一般java的exec是沒有幫你處理線程阻塞問題的,需要手動處理。
處理后:

 

復制代碼代碼如下:

Runtime r=Runtime.getRuntime();  
        Process p=null;  
        try{  
            String path = "D:/test.bat";  
     p = r.exec("cmd.exe /c  "+path);  
     StreamGobbler errorGobbler = new StreamGobbler(p.getErrorStream(), "ERROR");           
            errorGobbler.start();  
            StreamGobbler outGobbler = new StreamGobbler(p.getInputStream(), "STDOUT");  
            outGobbler.start();  
     p.waitFor();  
    }catch(Exception e){   
            System.out.println("運行錯誤:"+e.getMessage());  
            e.printStackTrace();   
   }  

 

StreamGobbler 類如下:

復制代碼代碼如下:

package com.test.tool;  

  
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.io.OutputStream;  
import java.io.PrintWriter;  

  
/** 
 * 用于處理Runtime.getRuntime().exec產生的錯誤流及輸出流 
 */  
public class StreamGobbler extends Thread {  
    InputStream is;  
    String type;  
    OutputStream os;  

    StreamGobbler(InputStream is, String type) {  
        this(is, type, null);  
    }  

    StreamGobbler(InputStream is, String type, OutputStream redirect) {  
        this.is = is;  
        this.type = type;  
        this.os = redirect;  
    }  

    public void run() {  
        InputStreamReader isr = null;  
        BufferedReader br = null;  
        PrintWriter pw = null;  
        try {  
            if (os != null)  
                pw = new PrintWriter(os);  

            isr = new InputStreamReader(is);  
            br = new BufferedReader(isr);  
            String line=null;  
            while ( (line = br.readLine()) != null) {  
                if (pw != null)  
                    pw.println(line);  
                System.out.println(type + ">" + line);      
            }  

            if (pw != null)  
                pw.flush();  
        } catch (IOException ioe) {  
            ioe.printStackTrace();    
        } finally{  
            try {  
                pw.close();  
                br.close();  
                isr.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
}   


運行bat,就不會阻塞了。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女和男人免费网站视频 | 水多多凹凸福利视频导航 | 色综合网亚洲精品久久 | 好大好硬抽搐好爽想要 | 国产高清露脸学生在线观看 | 国产精品久久久久久久久99热 | 色中色破解版 | 掰开逼操 | 免费在线电视 | 俄罗斯一级大片 | 波多野结衣护士 | 精品综合在线 | 国产99视频精品免视看9 | 亚洲免费闲人蜜桃 | 亚洲国产情侣一区二区三区 | 极品虎白女在线观看一线天 | 国产成人精品一区二三区 | 国产精品制服丝袜白丝www | 欧美一级在线播放 | 欧美日韩看看2015永久免费 | 亚洲国产精品久久卡一 | 黑人巨大初黑人解禁作品 | 视频污版 | 忘忧草在线社区WWW日本直播 | 俄罗斯图书馆无打码久久 | 久久免费资源福利资源站 | 黑人操日本妞 | 久久无码人妻中文国产 | 亚洲福利一区二区精品秒拍 | 荡娃艳妇系列小说 | 羞羞麻豆国产精品1区2区3区 | 无毒成人社区 | 男女18一级大黄毛片免 | 狠狠色综合久久婷婷 | 久久视频在线视频观看精品15 | 精品久久一区 | 国产成人lu在线视频 | 欧美一级专区免费大片俄罗斯 | 四虎最新紧急更新地址 | 国产美女亚洲精品久久久久久 | 国产精品久久久久久久久久久搜索 |