Articles of sincronizzato

Perché i costruttori Java non possono essere sincronizzati?

Secondo la specifica del linguaggio Java , i costruttori non possono essere contrassegnati come sincronizzati perché altri thread non possono vedere l’object che si sta creando finché il thread che lo ha creato non lo ha completato. Questo sembra un po ‘strano, perché posso effettivamente avere un altro thread per visualizzare l’object mentre è in […]

Concetto di Java Multithreading e metodo join ()

Sono confuso nel metodo join() usato in Threads in Java. Nel seguente codice: // Using join() to wait for threads to finish. class NewThread implements Runnable { String name; // name of thread Thread t; NewThread(String threadname) { name = threadname; t = new Thread(this, name); System.out.println(“New thread: ” + t); t.start(); // Start the […]

ConcurrentHashMap è totalmente sicuro?

questo è un passaggio da JavaDoc per ConcurrentHashMap . Dice che le operazioni di recupero generalmente non si bloccano, quindi potrebbero sovrapporsi alle operazioni di aggiornamento. Questo significa che il metodo get() non è thread-safe? “Tuttavia, anche se tutte le operazioni sono thread-safe, le operazioni di recupero non comportano il blocco e non c’è alcun […]

Getter e setter dovrebbero essere sincronizzati?

private double value; public synchronized void setValue(double value) { this.value = value; } public double getValue() { return this.value; } Nell’esempio sopra c’è qualche punto nel rendere il getter sincronizzato?

Qual è la differenza tra sincronizzato su lockObject e usando questo come blocco?

Conosco la differenza tra il metodo sincronizzato e il blocco sincronizzato, ma non sono sicuro della parte del blocco sincronizzata. Supponendo che io abbia questo codice class Test { private int x=0; private Object lockObject = new Object(); public void incBlock() { synchronized(lockObject) { x++; } System.out.println(“x=”+x); } public void incThis() { // same as […]

Nelle sezioni critiche di Java, su cosa dovrei eseguire la sincronizzazione?

In Java, il modo idiomatico per dichiarare sezioni critiche nel codice è il seguente: private void doSomething() { // thread-safe code synchronized(this) { // thread-unsafe code } // thread-safe code } Quasi tutti i blocchi si sincronizzano su this , ma c’è una ragione particolare per questo? Ci sono altre possibilità? Esistono best practice su […]

Le relazioni avvenute prima con i campi volatili e i blocchi sincronizzati in Java e il loro impatto sulle variabili non volatili?

Sono ancora piuttosto nuovo al concetto di threading e cerco di capirne di più. Recentemente, mi sono imbattuto in un post sul blog What Volatile Means in Java di Jeremy Manson, in cui scrive: Quando un thread scrive su una variabile volatile e un altro thread vede quella scrittura, il primo thread indica il secondo […]

Sincronizzazione del campo non finale

Un avviso viene visualizzato ogni volta che si sincronizza su un campo di class non finale. Ecco il codice: public class X { private Object o; public void setO(Object o) { this.o = o; } public void x() { synchronized (o) // synchronization on a non-final field { } } } così ho cambiato la […]

Differenza tra volatile e sincronizzato in Java

Mi chiedo quale sia la differenza tra dichiarare una variabile come volatile e accedere sempre alla variabile in un blocco synchronized(this) in Java? Secondo questo articolo http://www.javamex.com/tutorials/synchronization_volatile.shtml c’è molto da dire e ci sono molte differenze ma anche alcune somiglianze. Sono particolarmente interessato a questa informazione: … l’accesso a una variabile volatile non ha mai […]

C’è un vantaggio nell’usare un metodo sincronizzato invece di un blocco sincronizzato?

Qualcuno può dirmi il vantaggio del metodo sincronizzato sul blocco sincronizzato con un esempio?