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

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

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,就不會阻塞了。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品国产亚一区二区三区 | 国产一区在线播放 | 狠狠色狠狠色综合婷婷tag | 欧美成年黄网站色高清视频 | 99国产精品免费观看视频 | 2021国产精品露脸在线 | 小向美奈子av| 加勒比福利 | 欧美福利在线观看 | chinese男男gayxxx chinese老头和老太交hd | 精品精品精品 | 日本一区二区三区四区无限 | 天天爱天天插 | 麻豆资源 | 亚洲卡一卡2卡三卡4麻豆 | 亚洲成在人网站天堂一区二区 | 五月婷婷在线观看 | 爱操综合网 | 免费的强动漫人物 | 日韩一区二区三区免费 | 色哟哟在线资源 | 日本久久免费大片 | 精品免费久久久久久成人影院 | 舔到喷水 | 别停好爽好深好大好舒服视频 | 久久偷拍人 | 国模孕妇季玥337p人体 | 国产亚洲精品日韩香蕉网 | 国产精品高清视亚洲一区二区 | 精品一区二区三区免费视频 | 日本高清中文字幕一区二区三区 | 久久两性视频 | 日本视频在线观看 | 青草视频在线观看免费资源 | 天天爱天天操天天射 | 荡女淫春2古装 | 亚洲欧美韩国日产综合在线 | 亚洲美女爱爱 | 华人在线京东热 | 91茄子| 亚洲欧美日韩国产精品影院 |