gpt4 book ai didi

Java 线程没有运行完成,为什么?

转载 作者:行者123 更新时间:2023-12-01 19:19:27 24 4
gpt4 key购买 nike

我有一个 Runnable,通过在其运行方法中执行以下操作,将数据(几百个文件)从 Android 设备传输到 PC

  1. 使用 Runtime.exec(CMD) 创建进程并执行命令
  2. CMD 是将数据从设备传输到运行该线程的 PC 的命令。(这是适用于 android 的 adb pull 命令)

我有一个主程序,它创建一个线程并启动这个可运行程序。可运行程序开始运行,它执行“adb pull”命令并开始传输数据,但它似乎在完成完整传输之前不久就暂停了。如果我强制退出主程序,传输就会完成。

如果我从主程序本身执行命令而不使用另一个线程,我不会遇到任何问题。

为什么我会遇到这个问题?

最佳答案

您需要使用命令的输出。

这个问题展示了如何使用 shell 脚本而不是代码中的输出:Java ProcessBuilder: Resultant Process Hangs

如果您想在 Java 代码中使用输出,基本上您将从 Process.InputStream 提供的 InputStream 中读取。

   Process process = Runtime.exec(CMD);
InputStream in = process.getInputStream();
// Repeatedly read from the input stream until eof.

这会阻塞,直到其他进程完成。如果您想要并发,您可以在另一个线程中读取输出。

关于Java 线程没有运行完成,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5023361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com