Die angenommene Antwort beantwortet die Frage über eine Thread-ID, aber es lässt Sie nicht "Thread X Y" Nachrichten. Thread-IDs sind eindeutig über Threads aber nicht unbedingt starten von 0 oder 1
Hier ist ein Beispiel für: die Frage:
import java.util.concurrent.*;
class ThreadIdTest {
public static void main(String[] args) {
final int numThreads = 5;
ExecutorService exec = Executors.newFixedThreadPool(numThreads);
for (int i=0; i<10; i++) {
exec.execute(new Runnable() {
public void run() {
long threadId = Thread.currentThread().getId();
System.out.println("I am thread " + threadId + " of " + numThreads);
}
});
}
exec.shutdown();
}
}
und die Ausgabe:
[email protected]:/dev/shm$ javac ThreadIdTest.java && java ThreadIdTest
I am thread 8 of 5
I am thread 9 of 5
I am thread 10 of 5
I am thread 8 of 5
I am thread 9 of 5
I am thread 11 of 5
I am thread 8 of 5
I am thread 9 of 5
I am thread 10 of 5
I am thread 12 of 5
Eine leichte zwicken Mit Hilfe der Modulo-Arithmetik können Sie "Gewinde X von Y" korrekt ausführen:
Neue Ergebnisse :
[email protected]:/dev/shm$ javac ThreadIdTest.java && java ThreadIdTest
I am thread 2 of 5
I am thread 3 of 5
I am thread 3 of 5
I am thread 3 of 5
I am thread 5 of 5
I am thread 1 of 5
I am thread 4 of 5
I am thread 1 of 5
I am thread 2 of 5
I am thread 3 of 5
das ist eigentlich nicht die gewünschte Antwort; man sollte '% numThreads' anstelle von – petrbel
@petrbel verwenden Er beantwortet den Fragetitel perfekt, und die Thread-ID ist meiner Meinung nach nahe genug, wenn das OP" etwas wie Thread 3 von 5 "anfordert. – CorayThan