ここで私は実装モデルがあります:Model Beanで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);
}
}
が、私はそれがすべてのLoginSessionインスタンスに対して新しいGsonインスタンスを作成するために役に立たないです思いました。
しかし、私が心配しているのは、スレッドセーフの問題です。約1000+インスタンス/秒が作成されます。
Gsonインスタンスを静的フィールドとして使用しても問題ありませんか?
アドバイス/訂正ありがとうございます。
GSONの同時性問題のため、クラッシュしました。だから私はそれが100%スレッドセーフではないと思っています。 – slott
@slott、あなたはGsonインスタンスをどのようにプール/再利用しますか?シリアル化する必要があるたびにインスタンス化しますか?または、スレッドローカルプールを使用しますか? –
GSONとGoogle Volleyを併用しており、JSONデータを同時に解析するときにこの問題が発生します。私が見ることができるのは、datetime値を解析するためのタイムスタンプを定義するという事実に関連しています。 – slott