为什么java线程没有启动?

时间:2012-05-30 07:10:16

标签: java multithreading java-native-interface

package keylogger;

public class TestKeys {
private static int i = 0;
private native void setWinHook();
private native void unregisterWinHook();

public static void main(String args[]) {

    TestKeys o = new TestKeys();

    System.loadLibrary("MyHook"); // load the library that registers the hook

    Runnable r = new Runnable() {
        @Override
        public void run() {
            System.out.println("After the call to System.loadLibrary");
        }
    };
    new Thread(r,"new thread").start();  
  }
}

当我启动程序时,dll已加载并且正常工作。但是run method new thread内的声明没有打印出来。这是为什么 ? 为什么java线程没有启动? dll代码不会立即返回。事实上,它无法返回。

并且:

当程序遇到语句System.loadLibrary 时是否会启动新线程?

1 个答案:

答案 0 :(得分:2)

  

当程序遇到语句System.loadLibrary?

时是否启动新线程

除非库在其初始化部分中创建一个。

P.S。如果您join()线程,行为是否会改变?