ciao, sto facendo delle prove per gestire la sincronizzazione fra due o più threads.
sto provando a lanciare due thread e fare in modo che il secondo non scriva nella lista finchè il primo non finisce...
Codice PHP:
public class Test {
public static void main(String[] argv){
ThreadsSincronizzati threadSincronizzati = new ThreadsSincronizzati();
}
}
Codice PHP:
import java.util.*;
public class ThreadsSincronizzati {
public static Lista miaLista;
private Thread01 thread01;
private Thread02 thread02;
private ThreadStampa threadStampa;
public ThreadsSincronizzati(){
miaLista = new Lista();
thread01 = new Thread01();
thread02 = new Thread02();
threadStampa = new ThreadStampa();
thread01.start();
thread02.start();
threadStampa.start();
}
}
Codice PHP:
import java.util.*;
public class Lista {
private static ArrayList lista;
public Lista(){
lista = new ArrayList();
}
public synchronized void aggiungi(String testo){
lista.add(testo);
}
public synchronized void stampa(){
for(int i = 0; i < lista.size(); i++){
System.out.println(lista.get(i));
}
}
}
Codice PHP:
public class Thread01 extends Thread {
public void run(){
System.out.println("ESECUZIONE THREAD 01");
for(int i = 0; i < 100; i ++){
ThreadsSincronizzati.miaLista.aggiungi("THREAD01 " + i);
try{
this.sleep(20);
}
catch(Exception err){
System.out.println("ERRORE THREAD 01");
}
}
}
}
Codice PHP:
public class Thread02 extends Thread {
public void run(){
System.out.println("ESECUZIONE THREAD 02");
for(int i = 0; i < 100; i ++){
ThreadsSincronizzati.miaLista.aggiungi("THREAD02 " + i);
try{
this.sleep(20);
}
catch(Exception err){
System.out.println("ERRORE THREAD 01");
}
}
}
}
ho provato e riprovato ma i due threads continuano a scrivere nella lista in modo alternat...