Вы блокируете поток пользовательского интерфейса. Вы не должны этого делать. Опции:
join
в первых трех. Полезно с точки зрения создания другого ресурса, но достаточно простого. AtomicInteger
, чтобы убедиться, что вы не запускаете модель памяти и проблемы с условиями гонки. Запустите счетчик на 3 и уменьшите его в конце каждого потока. Когда последний поток завершит свою работу (т. Е. Его декремент ставит счетчик на 0), сделайте , чтобы он перешел в пользовательский интерфейс. (Вторая пуля может быть тем, что вы делали уже ... Трудно сказать наверняка, учитывая описание просто «Я использовал счетчик».)
Пока Я полностью понимаю, откуда вы пришли с точки зрения потока управления приложения, который намного сложнее в мире, управляемом событиями, так как работает Swing (и так работает большинство других интерфейсов пользовательского интерфейса). Вы просто не можете блокировать поток пользовательского интерфейса. (Это также почему C # 5 делает все проще на уровне language ...)
Создан вопрос / ответ, так как документация по мухам совершенно не подходит для решения подобных проблем.
Проблема заключается в ошибке в wildfly 8, из-за которой он запускал размер кучи по умолчанию, который был слишком мал для больших веб-приложений, даже если вы пытались его увеличить.
Обновление до новейшей модели «Wildfly» (15.0.0.Final на момент написания), похоже, исправляет ошибку, поскольку размеры кучи теперь корректно отражают