簡體   English   中英

從C(JNI)DLL調用時,Java應用程序不會啟動線程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM