Вот модель я реализовал:Можно ли использовать экземпляр Gson как статическое поле в компоненте модели (повторное использование)?
public class LoginSession {
private static final Gson gson = new Gson();
private String id;
private String name;
private long timestamp;
public LoginSession(String id, String name) {
this.id = id;
this.name = name;
this.timestamp = System.currentTimeMillis();
}
public String toJson() {
return gson.toJson(this);
}
public static LoginSession fromJson(String json) {
checkArgument(!isNullOrEmpty(json));
return gson.fromJson(json, LoginSession.class);
}
}
Я думал, что это бесполезно, чтобы создать новый экземпляр Gson для каждого экземпляра LoginSession.
Но я беспокоюсь о проблемах с потоками. Будет создано около 1000 экземпляров/сек.
Можно ли использовать экземпляр Gson как статическое поле?
Спасибо за любые советы/исправления.
У нас просто был сбой из-за проблем с параллелизмом с GSON. Поэтому я не думаю, что это 100% -ная потоковая безопасность - по крайней мере, не звоните в Json. – slott
@slott, как вы, ребята, собираете/повторно используете экземпляры Gson? Вы создаете экземпляр каждый раз, когда вам нужно сериализовать? Или использовать threadlocal пул? –
Мы используем GSON вместе с Google Volley, и когда мы анализируем данные JSON параллельно, мы видим эту проблему. Из того, что я вижу, это связано с тем, что мы определяем временную метку для синтаксического анализа значений даты и времени. – slott