У меня есть gui в java, и я хочу запустить внутри своего графического интерфейса, когда нажимается одна исполняемая программа. Мой код для запуска исполняемого файла заключается в следующем:Замораживание окна при использовании многопоточности в java
Process pr;
Runtime rt = Runtime.getRuntime();
new Thread(() -> {
try {
Process proc = rt.exec("Release\\face.exe", null, new File("Release\\"));
} catch (Exception e1) {
e1.printStackTrace();
}
}).start();
Исполняемыми работают, когда я нажав на кнопку, однако я обнаружить замораживание в исполняемом поведении. Я попытался добавить многопоточность, чтобы проверить, является ли это причиной замораживания, однако все же я испытываю то же самое. Что здесь может быть не так?
EDIT: Я попытался добавить следующие строки для InputStreamReader в моей теме:
new Thread(() -> {
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("face.exe", null, new File("Release\\"));
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedReader err = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}).start();
Я получил сообщение InputStreamReader
не может быть разрешен к типу.
Возможно, недостаточно кода для ответа ... но вы, вероятно, блокируете EDT. –
Как проверить, заблокирован ли я EDT? Я не очень хорошо знаком с EDT. –
Дайте нам код вашего обработчика событий, по крайней мере ... –