Bootstrap

Android C++系列:JNI中的线程操作

Java中创建线程三种方式:

  1. 继承Thread类创建线程类;
  2. 通过Runnable接口创建线程类;
  3. 通过Callable和Future创建线程。

Native 中支持的线程标准是 POSIX 线程,它定义了一套创建和操作线程的 API 。

我们可以在 Native 代码中使用 POSIX 线程,就相当于使用一个库一样,首先需要包含这个库的头文件:

 #include <pthread.h>              

这个头文件中定义了很多和线程相关的函数,这里就暂时使用到了其中创建线程部分内容。

创建线程

POSIX 创建线程的函数如下:

int pthread_create(
   pthread_t* __pthread_ptr, 
   pthread_attr_t const* __attr, 
   void* (*__start_routine)(void*), 
   void* arg);

它的参数对应如下:

  • __pthread_ptr 为指向 pthread_t 类型变量的指针,用它代表返回线程的句柄。
  • __attr 为指向 pthread_attr_t 结构的指针,可以通过该结构来指定新线程的一些属性,比如栈大小、调度优先级等,具体看 pthread_attr_t 结构的内容。如果没有特殊要求,可使用默认值,把该变量取值为 NULL 。 第三个参数为该线程启动程序的函数指针,也就是线程启动时要执行的那个方法,类似于 Java Runnable 中的 run 方法,它的函数签名格式如下:
<
;