ho la classe inferioreUn blocco sulla classe blocca anche le variabili di classe? - java
public class Example{
public static List<String> list = new ArrayList<String>();
public static void addElement(String val){
synchronized(list){
list.add(val);
}
}
public static synchronized void printElement(){
Iterator<String> it = list.iterator();
while(it.hasNext()){
//print element
}
}
}
Sarà l'iteratore() chiamata nel metodo printElement buttare ConcurrentModificationException? La domanda di base è se il blocco su oggetto di classe viene acquisito (come fatto nel metodo printElement), bloccherà anche i membri/le variabili della classe? per favore aiutami con la risposta.
l'utilizzo di due blocchi potrebbe provocare alcuni problemi di blocco, quindi rimuoverei il sincronizzato nella firma del metodo – Simiil
@Simiil: * Qualsiasi * blocco può comportare un deadlock. :-) Ma sì, l'ho rimosso, poiché non dovrebbe essere necessario a meno che non ci sia un motivo non mostrato nella domanda. –
Un blocco in realtà non blocca nulla. È usato per bloccare qualcosa :) – extraneon