Ok, lo so che è probabblly mz cattiva comprensione di come le discussioni funzionano davvero, ma fino a quando qualcuno mi aiuta a capire io credo che sia un bug :)getName Discussione() restituisce il nome sbagliato
Nella mia classe principale e il suo metodo main() ho:
public static void main(String args[]){
StoneBucket stoneBucket = new StoneBucket();
StonePutter spRunnable = new StonePutter(stoneBucket);
StoneThrower stRunnable = new StoneThrower(stoneBucket);
StoneThrower stRunnable2 = new StoneThrower(stoneBucket);
//Create the Threads that will take the Runnables as arguments
Thread puttingThread = new Thread(spRunnable);
Thread throwingThread = new Thread(stRunnable);
Thread throwingThread2 = new Thread(stRunnable);
puttingThread.setName("Putter");
throwingThread.setName("Thrower 1");
throwingThread2.setName("Thrower 2");
[...]
e poi nella mia classe StoneThrower ho
public class StoneThrower implements Runnable{
private StoneBucket sb;
private String name;
public StoneThrower(StoneBucket _sb){
this.sb = _sb;
}
public void run(){
name = Thread.currentThread().getName();
System.out.println("T::"+name+" started...");
int count = 0;
while(true){
[...]
Quando compilo ed eseguire questo codice sto ottenendo:
Quindi, la mia domanda è: perché fare entrambe le cose di questi fili restituiscono lo stesso nome per currentThread().getName()
? Quando sono stati creati, gli è stato assegnato il nome tramite threadX.setName("XXX")
e questi vengono avviati chiamando threadX.start()
... Qualcuno potrebbe chiarirmi questo?
MODIFICA: Ho accettato la risposta corretta perché cambiando lo stRunnable in stRunnable2 il comportamento è come previsto. La vera domanda è ora perché succede questo. Creo due thread e li avvio separatamente. Come è possibile che il metodo run() (chiamato una volta quando il thread è stato creato) restituisca un nome errato?
puoi pubblicare il pezzo di codice in cui si stanno avviando i fili? – PearsonArtPhoto