Разбирался в Java.lang.Process и написал 2 программы:
эта
public static void main(String[] args) throws IOException {
Writer writer = new FileWriter("C:\\Users\\User\\Desktop\\test\\output.txt", true);
writer.write("Init message");
for (int i = 0; i < 100000; i++) {
System.out.println(i);
}
writer.close();
}
и запускашка
Process p1 = Runtime.getRuntime()
.exec("java -classpath C:\\Users\\User\\Desktop\\test Main");
p1.waitFor();
System.out.println("finished");
Суть проблемы в том, что если я запускаю программу напрямую, тогда она завершает роботу нормально и выводит в файл все. Если запускаю через вторую программу, то она доходит до 99990 прохода(смотрю по выводу в файл) и зависает, ибо, там есть waitFor(). Почему так и можно ли это исправить?
Заранее спасибо за ответы.
Из JavaDoc для класса Process
By default, the created subprocess does not have its own terminal or console. All its standard I/O (i.e. stdin, stdout, stderr) operations will be redirected to the parent process, where they can be accessed via the streams obtained using the methods getOutputStream(), getInputStream(), and getErrorStream(). The parent process uses these streams to feed input to and get output from the subprocess. Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, or even deadlock.
Иными словами, когда создаёшь подпроцесс, ты отвечаешь за вычитывание его output'а или он может повиснуть.
В Яве можно настроить автоматическое вычитывание (через редирект в родительскую консоль) https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html#redirect-input
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Первый вопросКакая связь существует между уровнем изоляции транзакций, параметрами JPA Lock
ищу помощи по правильному формированию списков характеристик товара, остановился на отображении в виде таблицы, однако имею неприятность...
при выборе вариативного товара в woocommerce, надпись очистить неправильно отображается, плывет https://apphoneru/product/iphone-xs-max-512gb-zolotoj/ хотя вот на этом...