哪位高手可幫小弟一個忙,十萬火急!!!在java執行緒中可不可以呼叫JNI

綠化樹發表於2003-09-12
在一個執行緒地run()方法中呼叫一個方法,該方法例項化一個包含本地方法呼叫的方法,可是該執行緒執行到該方法時就無反映了。
具體相關程式如下:
1。主程式
public class testJni
{
public static void main(String[] args)
throws java.io.IOException
{
Thread manager = new Thread(new testThread());
manager.setDaemon(true);
System.out.println("input 'exit' thread will stop.....");
manager.start();

}

}
2。執行緒
public class testThread
implements Runnable
{
public testThread()
{
}

public void run()
{
while(true)
{
long t = System.currentTimeMillis();
try
{
int intGetDecryptWPSFile = getDecryptWPSFile(args[0],args[1]);

}
catch(Exception e)
{
System.err.println("error is " + e.toString());
return;
}

try
{
Thread.sleep(1000);
}
catch(InterruptedException e)
{
}

}
}

private synchronized int getDecryptWPSFile(String strDocFileName,String strDecryptFileName)
{
int intTmp = -1;
DecryptWPSFile app = new DecryptWPSFile();
//decrypt是一個本地方法,由c++寫成,編譯為dll
intTmp = app.decrypt(strDocFileName,strDecryptFileName);
return intTmp;
}

}
3.呼叫本地方法的類
public class DecryptWPSFile {
static
{
//loadLibrary
System.loadLibrary("dll's name");
}
public native int decrypt(String str1, String str2);
}

相關文章