CodeGym
AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • ProcessBuilder — 启动外部进程

    JAVA 25 SELF
    等级 61,课时 0
    讲解如何在 Java 中使用 ProcessBuilder 类启动外部command和工具:它与 Runtime. getRuntime(). exec() 相比有哪些优势,如何通过 directory() 设置工作目录,通过 environment() 配置环境变量,以及如何通过 start()、 waitFor()、 getInputStream()/ getErrorStream()/ getOutputStream() 管理进程。还将讨论跨平台性( cmd.exe/ ls)、如何处理 stdout/ stderr,以及常见Error。
    可用
  • 读取进程输出,操作 stdin/stdout

    JAVA 25 SELF
    等级 61,课时 1
    在 Java 中与外部进程交互的实践:如何通过 stdout 的 Process.getInputStream() 读取输出,通过 Process.getErrorStream() 捕获来自 stderr 的错误,通过 Process.getOutputStream() 向 stdin 写入数据,以及使用便捷方法 inputReader()/ errorReader()/ outputWriter()。我们还将讲解诸如 java -version 等命令的特殊性、为避免 deadlock 而并行读取两个流、编码处理( "UTF-8"),以及与 Python 脚本之间的小型桥接。
    可用
  • 进程生命周期管理

    JAVA 25 SELF
    等级 61,课时 2
    在 Java 中管理外部进程的实践:通过 waitFor() 等待结束(包括超时),读取退出码,通过 destroy()/ destroyForcibly() 正确停止,防止挂起和“僵尸”进程,同时别忘了处理输出流和异常。讲解跨平台细节与常见错误。
    可用
  • 与进程的交互式通信

    JAVA 25 SELF
    等级 61,课时 3
    在本讲中,我们将讲解如何在 Java 中与外部程序建立“实时”对话:向 stdin 写入、从 stdout 和 stderr 读取,避免相互阻塞( deadlock),使用 ExecutorService 并行处理输出,正确关闭流,并通过 ProcessBuilder 管理 Process 的生命周期。我们将查看使用 Python 交互式脚本和 bc 工具的示例,并分析缓冲以及必须调用 flush() 的那些坑。
    可用
  • 处理进程时的常见错误解析

    JAVA 25 SELF
    等级 61,课时 4
    面向 Java 外部进程稳定性的实用指南:如何避免因未读取的流 stdout/ stderr 导致的卡死,正确设置输出编码(例如 UTF-8、 CP866),考虑命令的跨平台差异( ls vs dir),通过 process.exitValue() 处理权限与退出码,关闭资源防止泄漏,并避免交互式的相互阻塞。我们将讲解对 ProcessBuilder 的合理使用、并行读取流(线程/ ExecutorService)、通过 process.destroy() 的正确终止,以及借助 File.separator 的通用路径处理。
    可用
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
English Deutsch Español हिन्दी Français Português Polski বাংলা
简体中文
मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym