[英]Java app does not start a thread when called from C (JNI) DLL
我創建了一個其中啟動線程的Java庫。
當使用普通的java-main方法測試該庫並調用該庫時,所討論的線程就可以正常啟動。
但是現在我想通過JNI從C dll調用此庫。
1)因此,C dll通過JNI調用庫方法foo
2) foo
創建一個Java線程,並呼吁start
就可以了
3) foo
返回到C dll調用程序。
4)Java線程現在開始
問題是,我得到一個Future
從螺紋回來,我呼吁get
它。
從C dll調用Java代碼時,此操作get
永遠阻塞,但從另一個Java應用程序調用時,此方法會正常工作。
使用JNI,所有其他代碼也可以正常運行。
任何想法如何發生?
dll或JNI是否以某種方式阻止了Java線程的創建?
如果有人遇到類似的問題:
問題是我創建了對該dll的本地回調。
從創建的線程中調用此回調,並且不允許在本機代碼上進行多線程處理。
刪除線程對本機代碼的所有調用即可解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.