W bibliotece JSON Java (org.json.JSONArray) Znalazłem ten fragment kodu z synchronized
bloku wokół zmiennej metody lokalnegoKonieczność zsynchronizowane w zmiennej lokalnej
public String toString(int indentFactor) throws JSONException {
StringWriter sw = new StringWriter();
synchronized (sw.getBuffer()) {
return this.write(sw, indentFactor, 0).toString();
}
}
Nie rozumiem konieczność synchronizacji tutaj, ponieważ StringWriter
jest tylko lokalny dla podanej metody (i dlaczego synchronizacja dotyczy bufora). Czy synchronizacja jest naprawdę potrzebna tutaj i jeśli, dlaczego?
Nie jest to konieczne. Przy domyślnym konstruktorze bufor jest nowo utworzonym obiektem. 'buf = new StringBuffer();' wewnątrz konstruktora. –
Należy zauważyć, że autor biblioteki org.json jest programistą JavaScript, a nie programistą Java, co zostało zademonstrowane w całym kodzie. W przypadku poważnego przetwarzania JSON rozważ użycie biblioteki Google Gson. –