2011-12-28 15 views
6

Bu bağlantı "çok işe yarıyor" önermek görünüyor: (oldukça uzak altındaki 7.3 no.lu Yerli Konular takma) http://java.sun.com/docs/books/jni/html/invoke.htmlJNI ile C'den birden çok konudan bir java işlevi çağırırsam ne olur?

o nasıl mümkün olduğunu görmüyorum, kendi başlayacağım gömülü JVM olduğunu iş parçacığı otomatik olarak? Veya JNI aramaları sıraya mı? Aynı sanal makineye başka ne şekilde çağrı yapılabilirdi? Ben herhangi bir iş parçacığı yapmak için talimat vermedim? Tahmin edebiliyorum

Herhangi yolu o iştir için, java kodu basitçe c koduyla aynı çağıran evre idam edilecektir. Bu doğru mu? Bu, Java'da herhangi bir iş parçacığı yapmak zorunda olmadığım anlamına gelir.

+0

Bağlandığınız makaleye gelince, Java'da herhangi bir iş parçacığı yapmanız gerekmez. Diğer bir soru ise, JVM'nin kendi ayrı iş parçacığını oluşturması veya sadece orijinal parçayı kullanmasıdır (ikincisine bahse girerim). – SJuan76

cevap

4

jvm kendi iş parçacığı oluşturmak zorunda değildir, yöntem çağrıları bunları yapan yerel iş parçacıklarında yürütülür. AttachCurrentThread ve DetachCurrentThread, gerekli yerel jvm dahili durum yönetimini, örneğin yerel konuları sarmalayan java Thread nesnelerini oluşturacaktır.

+0

Evet, bunu yalnızca Wikipedia'da buldum: 'Ekledikten sonra, yerel bir iş parçacığı, yerel bir yöntemle çalışan normal bir Java iş parçacığı gibi çalışır. Yerel iş parçacığı, kendisini çıkarmak için DetachCurrentThread() öğesini çağırıncaya kadar VM'ye bağlı kalır. – Blub

0

JVM çalışması için gereken kendi konuları başlar. JVM'yi başlatarak bu iş parçacığı oluşturmayı tetiklersiniz.

İlgili konular