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();
Con questa modifica c'è una sequenzialità ben precisa: Thread1 esegue e termina prima di Thread2.

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".
Stai dimenticando una cosa: l'array è in "comune" tra i due thread:

codice:
        String[] arr =  new String[10];
        w1.setString(arr);
        w2.setString(arr);
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".


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.


Originariamente inviato da bubble8o8
Se non ti ho ancora annoiato
Nessun problema, figurati.