(junit/mockito) thread.join() завершается до завершения работы потока?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 (junit/mockito) thread.join() завершается до завершения работы потока?

Сообщение Anonymous »

быстро поискал и ничего не нашел. Вот небольшой пример кода

Код: Выделить всё

Map valuesFromThread = new HashMap();
List threads = new ArrayList();
List labels = new ArrayList();

labels.add('hello1');
labels.add('hello2');
labels.add('hello3');

for (String l : labels)
{
Thread t = new Thread(() ->
{
valuesFromThread.put(l, 123);
});
t.start();
threads.add(t);
}

// wait for work to complete
for (Thread t : threads.values())
{
t.join();
}

if (labels.size() != presignedS3Urls.size())
{
// throw error (never happens in practice)
}
Поскольку на практике мы ждем завершения каждого потока, гарантируя наличие записи в ValuesFromThread для каждого потока, а значит, и для каждой метки.
Однако, когда я использую этот метод в модульном тесте, создается впечатление, что работа потока на самом деле никогда не выполняется, или, по крайней мере, до того, как мы выполним проверку внизу.
Обратите внимание: этот код вложен в метод, который мне нужно протестировать, поэтому на самом деле мне не нужно создавать макет сценария, эквивалентный приведенному выше, который проверяет что-то подобное. Мне нужно, чтобы эту логику можно было тестировать с помощью внешнего метода без изменений. что-нибудь из этого.
Есть ли какой-нибудь способ решить эту проблему?
Я не нашел никаких ресурсов по этой проблеме, поэтому не смог попробуй еще что-нибудь.

Подробнее здесь: https://stackoverflow.com/questions/781 ... rk-is-done
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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