SORU
5 Kasım 2010, Cuma


Erişim SimpleDateFormat senkronize

SimpleDateFormat için javadoc SimpleDateFormat senkronize olmadığını bildiriyor.

"Tarih biçimleri eşitlenir. Bu ayrı oluşturmak için tavsiye edilir her iş parçacığı için biçimi örnekleri. Eğer erişim birden çok iş parçacığı bir biçimi, aynı anda, senkronize olmalı dışarıdan."

Ama ne çok dişli bir ortamda SimpleDateFormat örneği kullanarak en iyi yaklaşımdır. Burada bir kaç seçenek var düşünce var kullanılan seçenekler 1 ve 2'de geçmiş ama ben merak etmiyor musun varsa daha iyi alternatifler ya da bu seçenekler sunuyoruz ki en iyi performans ve tutarlılık.

Seçenek 1: gerektiğinde yerel örnekler oluşturur

public String formatDate(Date d) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    return sdf.format(d);
}

Seçenek 2: bir sınıf değişkeni ama senkronize erişim olarak SimpleDateFormat bir örneğini Oluşturun.

private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public String formatDate(Date d) {
    synchronized(sdf) {
        return sdf.format(d);
    }
}

Seçenek 3: her iş parçacığı için SimpleDateFormat farklı bir örneğini saklamak için bir ThreadLocal Oluşturun.

private ThreadLocal<SimpleDateFormat> tl = new ThreadLocal<SimpleDateFormat>();
public String formatDate(Date d) {
    SimpleDateFormat sdf = tl.get();
    if(sdf == null) {
        sdf = new SimpleDateFormat("yyyy-MM-hh");
        tl.set(sdf);
    }
    return sdf.format(d);
}

CEVAP
5 Kasım 2010, Cuma


  1. SimpleDateFormat yaratıyor expensive. Nadiren yaptığı sürece bu kullanmayın.

  2. Eğer engelleme biraz yaşayabilirsen TAMAM. Eğer() kullanın formatDate pek kullanılmaz.

  3. Hızlı EĞER iş parçacıkları (thread pool) yeniden seçeneği. 2. Daha fazla bellek kullanır ve daha yüksek başlangıç masrafı var.

Uygulamalar için de 2. ve 3. uygun seçenekler vardır. En iyi durumda olan kullanma durumu bağlıdır. Erken optimizasyon dikkat edin. Eğer bu bir sorun olduğunu düşünüyorsanız, sadece yap.

3 parti tarafından kullanılan kütüphaneler için 3 seçeneği kullanmak istiyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ghosti66

    ghosti66

    27 AĞUSTOS 2006
  • hydejiaqi

    hydejiaqi

    12 Mart 2008
  • The Amazing Atheist

    The Amazing

    20 Kasım 2006