Ajuda com Thread

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?

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

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

Exemplo 1
Exemplo 2

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?