Ajuda com Thread

4 respostas
threadsjava
Algebra

Caros,
no meu código

ExecutorService executor = Executors.newFixedThreadPool(6);
Runnable task = () -> minhaFuncao();
executor.submit(task);
executor.awaitTermination(15, TimeUnit.MILLISECONDS);

a linha 4 o parâmetro 15 diz que e executor vai esperar 15 milissegundos as threads serem executadas. Devido a grande quantidade de operações que eu faço, cada milissegundo é super importante para mim. O problema é que se eu coloco ali 12 milissegundos as vezes eu tenho o seguinte problema:

Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429)
at java.util.HashMap$EntryIterator.next(HashMap.java:1463)
at java.util.HashMap$EntryIterator.next(HashMap.java:1461)

Eu gostaria de saber se ao invés de 15 milissegundos tem como descobrir o exato momento que a(s) thread(s) foram executadas.

Alguém com mais experiência pode me ajudar com isso?

4 Respostas

darlan_machado

E se você colocar todas as threads sincronizadas e acionar o método notify, não resolve?

Algebra

Não tenho ideia de como fazer isso. Mas vou googlar aqui, obrigado darlan_machado

darlan_machado

Exemplo 1
Exemplo 2

staroski

Está acontecendo ConcurrentModificationException em um Iterator, tem certeza de que você não está alterando uma coleção ao mesmo tempo em que está iterando ela através de um enhanced for?

Criado 21 de março de 2018
Ultima resposta 21 de mar. de 2018
Respostas 4
Participantes 3