系统loadLibrary在多个线程中使用时挂起



我正试图在线程中从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 ...
}

最新更新