2010-07-07 16 views

cevap

4

Maliyeti göz önünde bulundurarak, tek geçerli cevap kendiniz için test etmektir (size söylememenin çok şık bir yolu, böyle bir testi hiç yapmadım ve modern yürütme mekanizması çok gelişmiş bir yaratım sağladığı için asla yapmam./imha mekanizmaları.

Varolan uygulamaları gerçekleştirirken, Java modern sürümleri (Java 5 ile başlayan), bir iş parçacığı havuzunun faydalarını java.util.concurrent: Executors'ın en modern konseptleriyle birleştiren çeşitli alt sınıflar sunar.

Ayrıca ben Konular unutmak için ve, Runnable çağrılabilir ve diğer daha gelişmiş hesaplama nesnelerle onları repalce için size yeterli salık asla. Bu sayede, kolayca Executors uygulamasını değiştirebilirsiniz.

+0

executors statik yardımcı sınıf basitçe ne denir yöntem göre yapılandırıldığından olan ThreadPoolExecutor bir örneğini oluşturmak sunuyor. –

5

Her zaman bir iş parçacığı havuzu kullanmak gerekir. Sadece performans için değil, kullanım kolaylığı için java.util.concurrent paketi size verir. Java 5 ve üstü ile, iş parçacığı havuzu oluşturulmuştur.

'Thread' olarak düşünmek yerine, gerçekleştirmeniz gereken görevleri gerçekleştirmek için Executor arabirimini kullanın. java.util.concurrent paketine

Executor executor = Executors.newFixedThreadPool(5); 

Tüm belgeler burada: http://java.sun.com/javase/6/docs/api/java/util/concurrent/package-frame.html

0

oluşturma ipler daima pahalı, platformdan bağımsız olarak yeni bir iş parçacığı havuzu oluşturma kadar basittir. Bir iş parçacığı oluşturmak için gerçek zaman işletim sistemine bağlıdır.

Ben çok sık kısa ömürlü konuları oluşturursanız bir iş parçacığı havuzu kullanarak öneriyoruz. Örneğin, uygulamanızın birincil görevi kısa ömürlü görevlere hizmet etmekse, iş parçacığı havuzu çok hoş olurdu. Eğer çok fazla iş parçacığı oluşturursanız

bir iş parçacığı havuzu da güzel. Konular arasında içerik geçişi performansı da öldürebilir. Uzun, kısa, çağdaş dört çekirdekli PC mimarisi üzerinde, aynı anda çalışan 200'den fazla iş parçacığına sahip olmayı hedeflemelisiniz.

+2

Birisi burada bir soruya cevap verirken bunu ölçtü: http://stackoverflow.com/questions/2117072/java-thread-creation-overhead Saniyede 10.000 iş parçacığı yarattı, bu yüzden bu çok pahalı değil. –

+0

İş parçacığı oluşturma işlemi tamamdır, Java'da olduğu gibi asıl iş parçacığı yalnızca iş parçacığı yöntemi başladığında oluşturulur. Bununla birlikte, 10.000 iş parçacığı, bağlam geçişi nedeniyle bir performans katilidir. – Nick

İlgili konular