2013-09-25 2 views
0

Я написал код, который позволяет пользователю вводить код в текстовое поле, и я запускаю этот код в отдельном процессе и собираю вывод кода и возвращаю ответ от сервлета в браузер.Запись в поток браузера бесконечно?

Проблема

Что делать, если пользователь сделал программу бесконечного цикла .... поэтому процесс будет продолжать работать и писать в поток браузера происходит один раз, как я могу писать в поток браузера в случае бесконечный цикл.

ответ

0

Вы наткнулись на halting problem. Невозможно определить, находится ли раздел кода в бесконечном цикле. Лучшее, что вы можете сделать, это наложить ограничение по времени и остановить код после этого времени.

В Java вы можете сделать это, выполнив код в своем потоке, а затем убив поток по истечении заданного времени. Вы можете увидеть пример этого в этом сообщении SO: Killing thread after some specified time limit in Java

+0

Итак, вы хотите сказать, где бы я не собирал вывод mybprocess, я должен заключить его в поток исполнителей и убить его через определенное время? – cafebabe1991

+0

Если вы выполняете произвольный код, вы не контролируете его: yes. Невозможно правильно определить, будет ли выполняться заданный набор инструкций. В очень простом масштабе вы можете попробовать это, но ваши усилия будут бесполезны, так как сложный ввод в конечном итоге сорвет ваши попытки. –

Смежные вопросы