Ho letto ovunque che se un campo viene utilizzato contemporaneamente da thread diversi, è necessaria una sorta di sincronizzazione e, se viene utilizzato da un solo thread, non è necessario. Ma cosa succede se viene utilizzato da thread diversi, ma non allo stesso tempo? Diamo un codice come questo:È sicuro utilizzare un oggetto in thread diversi, ma NON allo stesso tempo?
Thing thing = new Thing();
Thread t1 = new Thread(new MyRunnable(thing));
Thread t2 = new Thread(new MyRunnable(thing));
t1.start();
t1.join();//Wait for t1 to finish
t2.start();
MyRunnable è:
class MyRunnable implements Runnable {
//skipped constructor and field "private final Thing thing"
public void run() {
thing.someUpdate();
}
}
E 'sicuro? Tutti gli aggiornamenti fatti da t1 sono visibili da t2?
Probabilmente dovresti citare le parti rilevanti della documentazione a cui ti sei collegato, solo in caso di link rot. –