我正试图在线程中从Java应用程序加载本机库,比如每个线程Thread1、Thread2。。。ThreadN试图加载同一个共享库,但在Thread1加载该库后,System.loadLibrary上的其他线程被阻止。有人能帮我解决这个问题吗?
感谢
使用同步和标志:
boolean isLoaded = false;
Object lock = new Object();
void loadLibs(){
sinchronized(lock){
if(!isLoaded) {
//System.loadLibrary ...
isLoaded = true;
}
}
}
或者你可以使用trick wih静态构造函数,它保证只调用一次
static {
//System.loadLibrary ...
}