Ich arbeite an einer gegenseitigen Ausschluss-Zuweisung, aber als ich gestartet habe, bemerkte ich, dass die Thread-ID meiner Anwendung bei 9 beginnt. Sie ändert sich nicht, wenn ich sie kompiliere und erneut ausführe. Gibt es ein Problem, das ich vermisse, oder können Java-Thread-IDs bei einer beliebigen Nummer beginnen? This question ist verwandt.Sollen Java Thread IDs immer bei 0 beginnen?
Für Interessenten, hier ist eine Klasse von Herlihy & Shavit "The Art of Multi-Prozessor-Programmierung" für die Nummerierung-Themen:
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);
}
}
können Sie rufen dann
ThreadID.get();
denen nummeriert automatisch und beginnt immer bei 1.