Nella libreria JSON-java (org.json.JSONArray) Ho trovato questo frammento di codice con un synchronized
blocco attorno una variabile metodo localeNecessità di sincronizzato su variabile locale
public String toString(int indentFactor) throws JSONException {
StringWriter sw = new StringWriter();
synchronized (sw.getBuffer()) {
return this.write(sw, indentFactor, 0).toString();
}
}
Io non comprendono la necessità per la sincronizzazione qui, poiché StringWriter
è solo locale al metodo specificato (e, perché la sincronizzazione è nel buffer). La sincronizzazione è davvero necessaria qui, e se, perché?
Non è necessario. Con il costruttore predefinito, il buffer è un oggetto appena istanziato. 'buf = new StringBuffer();' all'interno del costruttore. –
Si noti che l'autore della libreria org.json è un programmatore JavaScript, non un programmatore Java e questo fatto è dimostrato in tutto il codice. Per l'elaborazione JSON seria, prendi in considerazione l'utilizzo della libreria Gson di Google. –