求教Linuxjava线程状态的结合状态和分离状态

当eclipse console 不再出现信息即死锁状态时候,用注释中的两条命令观察信息。

 ----->第一次发,有啥错误多包涵呀,转载请注明

最近做的一个小工程需要用到回调函数,由linux层回调到java层,调试的时候会遇到一些问题,免得忘记,在这里记录一下:

JNI的各种数据类型和数据结构我就不详细介绍了,简单说一下

JavaVM *m_jvm;  java虚拟机,这个变量可以在不同的线程里面使用,获取的方法也有很多,可以通过env获取,也可以通过JNI_OnLoad函数来获取
JNIEnv *g_env;     这个是一个线程的相关变量,这里注意的是一个线程的,对于每个线程来说是唯一的,不能在不同的线程里面使用同一个env;

 接下去就是上代码了

这是一个回调函数,给linux用的,上报状态的,在代码已经注明了必须attach,不然会报以下错误

其实也很好理解,因为大家注意到我的接口并不是标准的JNI接口,这个接口是我自己创建供linux层回调的,一般标准的JNI接口,是直接供java层使用的,那时候的多线程attach其实是attach到UI线程上的,但在linux里面创建了一个线程去回调这个状态函数的时候,并没有涉及到UI线程,所以是到了JNI层的话,必须也得要有一个线程去处理这个回调,下面的就好理解了,JNI线程去回调java的时候,java也必须要有一个线程去处理,下面会讲到。

在代码里面可以看到我调用的是statebroadcast这个回调函数

这里必须要用handler去处理,不然会报如下错误

这样从linux线程通过JNI调用到JAVA的函数就完全可以啦,第一次作记录,如果 有错误,欢迎斧正!

我要回帖

更多关于 java线程状态 的文章

 

随机推荐