Con questa modifica c'è una sequenzialità ben precisa: Thread1 esegue e termina prima di Thread2.Originariamente inviato da bubble8o8
codice:w1.start(); try{ w1.join(); } catch(Exception ex){ System.out.println("Eccezione"); } w2.start(); try{ w2.join(); } catch(Exception ex){ System.out.println("Eccezione"); } w1.printString(); w2.printString();
Stai dimenticando una cosa: l'array è in "comune" tra i due thread:Originariamente inviato da bubble8o8
Il primo array ovviamente dovrebbe essere fatto da tutti "yes" e il secondo da tutti "no".
Se faccio eseguire prima w2 e dopo w1, tutte le voci sono "yes".
Thread1 quindi setta 10 "yes" e Thread2 setta 10 "no". Tu invochi printString su ciascun Writer ma essendo lo stesso array, lo stampi 2 volte. E lo stato ovviamente è l'ultimo impostato: quindi tutti "no".codice:String[] arr = new String[10]; w1.setString(arr); w2.setString(arr);
P.S. Sinceramente non ho capito cosa stai tentando di provare o testare con questi 2 thread. Visto che, tra l'altro, con la tua ultima modifica dei join non c'è nemmeno "concorrenza" tra i due thread.
Nessun problema, figurati.Originariamente inviato da bubble8o8
Se non ti ho ancora annoiato

Rispondi quotando