Ciao ragazzi buon anno. Sto cercando di imparare la programmazione concorrente in Java ma ancora non riesco a capirci molto. Ho un progetto come questo:
//- ProvaThreads.java -//
class ProvaThreads {
public static int denari=100000;
public static void main(String[] args) {
Ladro ladro1=new Ladro();
Thread t1=new Thread(ladro1);
Ladro ladro2=new Ladro();
Thread t2=new Thread(ladro2);
t1.start();
t2.start();
}
}
//- Fine ProvaThreads.java -//
//- Ladro.java -//
class Ladro implements Runnable {
public void run() {
int mydenari=0;
while(ProvaThreads.denari>0) {
ProvaThreads.denari--;
mydenari++;
}
System.out.println("Ho rubato questi denari: " + mydenari);
}
}
//- Fine Ladro.java -//
I due ladri dovrebbero rubare i denari in modo concorrente e quindi "fare un pò per ciascuno". Invece la stampa che il programma mostra è che solo un ladro ruba tutti i denari. Perchè? Ho pensato che forse la variabile mydenari della classe Ladro è condivisa da entrambi i threads. Se è così come si fa a dichiarare una variabile che può essere usata solamente da uno specifico thread?
Vi ringrazio, io navigo in alta marea...
PS: Scusate se il forum non mi permette di indentare il codice