Java Process类的详解及实例代码

发布时间 - 2026-01-10 23:18:29    点击率:

Java Process类的详解

前言:

      今天用了下Java.lang.Process类,只是初步的学习,并没有深入实践,因为感觉它的用途并不是很大,偶尔才可能用上,如果要经常使用它的人可以自行参考JDk文档。

      对Process类的简要说明:

     Process类是一个抽象类,方法都是抽象的,它封装了一个进程,也就是一个可执行的程序  该类提供进程的输入、执行输出到进程、等待进程的完成和检查进程的退出状态及销毁进程的方法

     ProcessBuilder.start()和Runtime.exec方法创建一个本机进程并返回Process子类的一个实例,该实例可以控制进程并获取相关的信息

     其它的概要请参考JDK文档

     下面就开始举几个简单的示例:

     (1)执行简单的DOS命令,如打开一个记事本

package com.iwtxokhtd.other;  
 
import java.io.IOException;  
 
public class ProcessTest {  
 
  public static void main(String[] args) {  
    try {  
            Process proc=Runtime.getRuntime().exec("notepad");  
    } catch (IOException e) {  
      // TODO Auto-generated catch block  
      e.printStackTrace();  
    }  
 
  }  
 
} 

package com.iwtxokhtd.other; 
 
import java.io.IOException; 
 
public class ProcessTest { 
 
  public static void main(String[] args) { 
    try { 
            Process proc=Runtime.getRuntime().exec("notepad"); 
    } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
    } 
 
  } 
 
} 

 (2)使用它的其它构造方法执行相关的命令,如下例:

package com.iwtxokhtd.other;  
 
import java.io.IOException;  
 
public class ProcessTest {  
 
  public static void main(String[] args) {  
    try {  
        
      String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";  
      String message="www.google.com";  
      String []cmd={exeFullPathName,message};  
      Process proc=Runtime.getRuntime().exec(cmd);  
    } catch (IOException e) {  
      // TODO Auto-generated catch block  
      e.printStackTrace();  
    }  
 
  }  
 
} 


package com.iwtxokhtd.other; 
 
import java.io.IOException; 
 
public class ProcessTest { 
 
  public static void main(String[] args) { 
    try { 
       
      String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE"; 
      String message="www.google.com"; 
      String []cmd={exeFullPathName,message}; 
      Process proc=Runtime.getRuntime().exec(cmd); 
    } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
    } 
 
  } 
 
} 

 执行上述命令可以打开Google网站

(3)列出系统正在运行的所有进程信息

package com.iwtxokhtd.other;  
 
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
 
public class ListAllProcessTest {  
 
  //列出所有的进程信息  
  public static void main(String[] args) {  
    BufferedReader br=null;  
    try {  
      Process proc=Runtime.getRuntime().exec("tasklist");  
      br=new BufferedReader(new InputStreamReader(proc.getInputStream()));  
      @SuppressWarnings("unused")  
      String line=null;  
      System.out.println("打印所有正在运行的进程信息");  
      while((line=br.readLine())!=null){  
        System.out.println(br.readLine());  
      }  
    } catch (IOException e) {  
      e.printStackTrace();  
    }finally{  
      if(br!=null){  
        try {  
          br.close();  
        } catch (Exception e) {  
          e.printStackTrace();  
        }  
      }  
    }  
      
 
  }  
 
} 


package com.iwtxokhtd.other; 
 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
 
public class ListAllProcessTest { 
 
  //列出所有的进程信息 
  public static void main(String[] args) { 
    BufferedReader br=null; 
    try { 
      Process proc=Runtime.getRuntime().exec("tasklist"); 
      br=new BufferedReader(new InputStreamReader(proc.getInputStream())); 
      @SuppressWarnings("unused") 
      String line=null; 
      System.out.println("打印所有正在运行的进程信息"); 
      while((line=br.readLine())!=null){ 
        System.out.println(br.readLine()); 
      } 
    } catch (IOException e) { 
      e.printStackTrace(); 
    }finally{ 
      if(br!=null){ 
        try { 
          br.close(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
        } 
      } 
    } 
     
 
  } 
 
} 

(4)判断一个具体的进程是否正在运行,如下例:

package com.iwtxokhtd.other;  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
public class FindProcessExeTest  
{  
  public static void main(String []args){  
      
    if(findProcess("QQ.exe")){  
      System.out.println("------判断指定的进程是否在运行------");  
      System.out.println("QQ.exe该进程正在运行!");  
    }else{  
      System.out.println("------判断指定的进程是否在运行------");  
      System.out.println("QQ.exe该进程没有在运行!");  
    }  
 
  }  
  public static boolean findProcess(String processName){  
    BufferedReader br=null;  
    try{  
       
      //下面这句是列出含有processName的进程图像名  
      Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");  
      br=new BufferedReader(new InputStreamReader(proc.getInputStream()));  
      String line=null;  
      while((line=br.readLine())!=null){  
        //判断指定的进程是否在运行  
        if(line.contains(processName)){  
          return true;  
        }  
      }  
        
      return false;  
    }catch(Exception e){  
      e.printStackTrace();  
      return false;  
    }finally{  
      if(br!=null){  
        try{  
          br.close();  
        }catch(Exception ex){  
        }  
      }  
        
    }  
  }  
} 


package com.iwtxokhtd.other; 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
public class FindProcessExeTest 
{ 
  public static void main(String []args){ 
     
    if(findProcess("QQ.exe")){ 
      System.out.println("------判断指定的进程是否在运行------"); 
      System.out.println("QQ.exe该进程正在运行!"); 
    }else{ 
      System.out.println("------判断指定的进程是否在运行------"); 
      System.out.println("QQ.exe该进程没有在运行!"); 
    } 
 
  } 
  public static boolean findProcess(String processName){ 
    BufferedReader br=null; 
    try{ 
       
      //下面这句是列出含有processName的进程图像名 
      Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/""); 
      br=new BufferedReader(new InputStreamReader(proc.getInputStream())); 
      String line=null; 
      while((line=br.readLine())!=null){ 
        //判断指定的进程是否在运行 
        if(line.contains(processName)){ 
          return true; 
        } 
      } 
       
      return false; 
    }catch(Exception e){ 
      e.printStackTrace(); 
      return false; 
    }finally{ 
      if(br!=null){ 
        try{ 
          br.close(); 
        }catch(Exception ex){ 
        } 
      } 
       
    } 
  } 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # Process  # Process详解  # Process分析  # Java Process中waitFor()的问题详解  # Java超详细讲解多线程中的Process与Thread  # Java中Process类的使用与注意事项说明  # Java Process详解及实例  # Java获取Process子进程进程ID方法详解  # 正在运行  # 是一个  # 这句  # 的人  # 都是  # 几个  # 文档  # 也就  # 子类  # 用了  # 希望能  # 谢谢大家  # 本机  # 装了  # 创建一个  # 可执行  # 请参考  # 可以自行  # 就开始  # 抽象类 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: iOS发送验证码倒计时应用  如何为不同团队 ID 动态生成多个独立按钮  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  如何确保FTP站点访问权限与数据传输安全?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Android自定义listview布局实现上拉加载下拉刷新功能  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  如何获取PHP WAP自助建站系统源码?  如何在云指建站中生成FTP站点?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Laravel如何生成URL和重定向?(路由助手函数)  Android滚轮选择时间控件使用详解  如何在腾讯云免费申请建站?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  高性能网站服务器部署指南:稳定运行与安全配置优化方案  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  网站制作企业,网站的banner和导航栏是指什么?  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Laravel如何实现数据库事务?(DB Facade示例)  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Laravel如何实现文件上传和存储?(本地与S3配置)  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何在Tomcat中配置并部署网站项目?  如何批量查询域名的建站时间记录?  网站建设保证美观性,需要考虑的几点问题!  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Python面向对象测试方法_mock解析【教程】  轻松掌握MySQL函数中的last_insert_id()  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  高防服务器租用指南:配置选择与快速部署攻略  Python并发异常传播_错误处理解析【教程】  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  高端建站如何打造兼具美学与转化的品牌官网?  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  如何快速查询域名建站关键信息?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何在云服务器上快速搭建个人网站?  Python文件流缓冲机制_IO性能解析【教程】  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  如何在阿里云高效完成企业建站全流程?