Простой эксперимент показал, что JDK7
скомпилированный HashMap<Integer, Integer>
использует много потоков при выполнении простого последовательного теста вставки-поиска:
- Вставка миллионов чисел.
- Поиск сотенмиллионы чисел.
Как получилось?JDK7 автоматически угадывает, как распараллелить этот код ???Мне нужно протестировать однопоточное поведение, как я могу это сделать?
Код, загружено около 2,5 ядер:
import java.util.*;
public class HashSpeed {
public static void main(String[] args)
{
HashMap<Integer, Integer> m = new HashMap<Integer, Integer>(10000);
final int N = 10000000;
for (int i=1; i<N; i+=2)
m.put(i, i);
for (int j=0; j<10; j++) {
for (int i=0; i<N; i++) {
if (m.get(i) != null != (i%2==1)) {
System.out.println("failed");
}
}
}
System.out.println("TEST OK");
}
}