2009-07-19 19 views
5

Java'da çok iş parçacıklı bir sınıf yükleyici uygulamak mümkün mü? Meta güdümlü bir çerçevede, birkaç yüz sınıfını önceden yüklemem gerekiyor, yani sistem klasörü olarak tembel değil. Bunu hızlandırmak için mevcut çok çekirdekli işlemcileri daha iyi kullanmak istiyorum. Buna dalmadan önce, birileri zaten bu konuda biraz tecrübesi varsa veya belki de muhtemelen bu durumda darboğaz olan defineClass()'un tamamen açık olmasıyla ilgilenirdim.Çok iş parçacıklı sınıflandırma mümkün mü?

Teşekkür Andre size önceden yüklemek için gereken tüm sınıfları gerektirir arka planda bir sınıf yüklenirken bir veya daha fazla dişe sahip olan yanlış bir şey yok

cevap

6

Şu anda özel bir kilite çarpacağına inanıyorum. JDK7'de, sınıf yükleyiciler kendilerini paralel olarak yetenekli olarak işaretleyebilecekler.

Her zaman olduğu gibi, bazı zarflama hesaplamaları yapıp sonra emmek istiyorum.

+0

Tamam, ben kontrol edeceğim Önce JDK 7.0 sınıf yükleyici API'sı. Herhangi bir JDK <7.0'daki kilitle doğruysa, en azından dosya sisteminden byte kodunun paralel yüklenmesi ve ön işlemin yapılması yararlı olabilir. Bunun benim amacım için yeterince iyi olup olmadığını görmek için bazı testler yapacağım. –

+1

İşte bir bağlantı: http://openjdk.java.net/groups/core-libs/ClassLoaderProposal.html. Bugüne kadar elden daha fazla bir şey bilmiyorum. –

+0

Teşekkürler Tom, yön ve mevcut durumu gösteren çok kapsamlı bir bağlantı. –

0

. Bir Executor ve Callables ile bir prototip yapın, böylece jvisualvm ile bazı profil bilgileri alabilirsiniz.

+1

Evet, teknik olarak birden fazla vida dişi yükleme sınıfına sahip olmak mümkün olmalıdır, bu oldukça açıktır. DefineClass() yöntemi senkronize edilmez, bu bir önkoşuldur. Ama acaba JVM kodunda daha derin bir yerde bir senkronizasyon noktası var mı? –

+1

defineClass sınıf yüklemesi JVM tarafından tek dişli olarak tanımlandığı için senkronize edilmez. (En azından Java 5 ve 6'da) Birkaç yüz sınıf, yüklemek için ihtiyacınız olan zaman çizelgesi ne kadar uzun sürmez? –

+0

Temel olarak, çerçevemi, çok iyi ölçeklenmeyen bir mimariye dayandığımdan sadece korkuyorum. Sınıfların 100'leri sadece bir başlangıçtır, ancak çerçeve giderek daha fazla özellik kazanırken, sınıfların sayısı binlerce kişiye kadar çıkabilir ve bu da başlangıçta ciddi bir gecikmeye neden olabilir. –

İlgili konular