我正在尝试从线程中的Java应用程序加载本机库,比如每个线程Thread1,Thread2 ...... ThreadN尝试加载相同的共享库,但是在Thread1加载库之后,其他线程被阻塞System.loadLibrary。任何人都可以帮我解决这个问题吗?
由于
答案 0 :(得分:2)
使用同步和标志:
boolean isLoaded = false;
Object lock = new Object();
void loadLibs(){
sinchronized(lock){
if(!isLoaded) {
//System.loadLibrary ...
isLoaded = true;
}
}
}
或者你可以使用静态构造函数的技巧,保证只能调用一次
static {
//System.loadLibrary ...
}