Как получить основной поток в Java? - PullRequest
2 голосов
/ 31 мая 2011

Итак, у меня есть длительный процесс, который я хочу инкапсулировать как Runnable и отправить его в потоке.Если быть более точным, у меня есть веб-служба POST, которая создает файл в файловой системе, но создание файла может занять очень много времени.

В методе ресурсов моего веб-сервиса я хочубыть в состоянии послать поток для создания файла и вернуть статус 200. Я не думаю, что я могу просто сделать Thread.join, потому что это будет означать, что текущему потоку придется ждать завершения потока создания файла.Вместо этого я хочу присоединить поток создания файла к основному потоку.Вопрос в том, как мне получить основной поток в Java?

Ответы [ 3 ]

4 голосов
/ 31 мая 2011

Я не уверен, правильно ли я вас понял.Вот что я понял:

Вы хотите предварительно выполнить, возможно, длительную операцию (создание файла), вы не хотите, чтобы ваш метод обслуживания блокировался, пока эта задача выполняется, вы хотите, чтобы задача выполнялась в потоке, существующем внеграница / время жизни одного запроса.

Прав ли я до сих пор?

Если мы действительно рекомендуем вам ознакомиться с более новыми концепциями в java.util.concurrent.Описанные здесь концепции должны дать вам достаточно информации для решения этой проблемы

Основное кредо: не думайте в потоках, думайте в задачах.

Общая рекомендация книги: параллелизм Java на практике Брайана Гетца

1 голос
/ 31 мая 2011

Вам нужно будет обработать запрос асинхронно.Для выполнения тяжелой работы будет создан отдельный поток, и поток получения запросов будет свободен для обработки других запросов.Пожалуйста, ознакомьтесь со следующими статьями.

0 голосов
/ 31 мая 2011

Когда вы создаете поток создания файла, вам нужно передать ему какую-то ссылку на родительский поток, чтобы он мог связаться (т. Е. Вы предоставляете что-то для включения обратного вызова).

Это может быть фактический объект Thread (полученный с помощью Thread.currentThread, как кто-то сказал в комментарии) или какой-либо другой объект, который вы используете, чтобы сигнализировать о завершении потока создания файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...