Грациозное завершение работы SimpleAsyncTaskExecutorJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Грациозное завершение работы SimpleAsyncTaskExecutor

Сообщение Anonymous »

Spring Framework SimpleAsyncTaskExecutor позволяет отправленной задаче быть активной, пока исполнитель уже закрыт.
На первый взгляд, это происходит, когда при определенном, довольно редком чередовании потоков, новая отправленная задача добавляется в незащищенную коллекцию задач activeThreads, в то время как метод close уже обрабатывает элементы этой коллекции.
MRE предоставляет испытательный стенд для случай и эмулирует ситуацию, слегка изменяя исходный код SimpleAsyncTaskExecutor и обеспечивая чередование этих конкретных потоков. Результаты теста JCStress показывают, что даже несмотря на то, что процент соответствующего результата очень низок, доли процента, вероятность все равно больше нуля.
Javadoc SimpleAsyncTaskExecutor утверждает, что класс, даже если он не реализует интерфейс ExecutorService, обеспечивает плавное завершение работы.
Конечно, плавное завершение работы может иметь довольно широкое значение, но JDK Например, ThreadPoolExecutor не имеет этой проблемы. MRE также обеспечивает сравнение между двумя исполнителями.
Отсюда вопрос:
Если разработчики SimpleAsyncTaskExecutor не намеревались реализовать столь же сильные гарантии плавного завершения работы, как предоставляет ThreadPoolExecutor, не следует ли упомянуть этот факт в javadoc класса SimpleAsyncTaskExecutor, чтобы не делать этого сбить с толку пользователей, которые могли бы ожидать более серьезных гарантий?
Иначе следует ли считать эту ситуацию ошибкой?

Подробнее здесь: https://stackoverflow.com/questions/798 ... skexecutor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»