Я работаю над назначением взаимного исключения, но при запуске я заметил, что идентификатор потока моего приложения начинается с 9. Он не меняется, когда я компилирую и выполняю его снова. Есть какая-то проблема, которую я пропускаю, или идентификаторы потоков Java могут начинаться с произвольного числа? Этот вопрос связан.
Для тех, кто заинтересован, вот класс из «Искусства многопроцессорного программирования» Херлихи и Шавита для нумерации потоков:
public class ThreadID {
private static volatile int nextID = 0;
private static class ThreadLocalID extends ThreadLocal<Integer> {
protected synchronized Integer initialValue() {
return nextID++;
}
}
private static ThreadLocalID threadID = new ThreadLocalID();
public static int get() {
return threadID.get();
}
public static void set(int index) {
threadID.set(index);
}
}
Вы можете позвонить
ThreadID.get();
, который будет автоматически увеличивать числа и всегда начинаться с 1.