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

  • Anthony Cumia

    Anthony Cumi

    5 EYLÜL 2006
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009
  • Showtime

    Showtime

    21 HAZİRAN 2006