先看执行结果
第一个参数是要创建的线程数,第二个参数是每个线程执行的任务数
ndk编译结果
编译的时候可以用 ndk-build NDK_LOG=1 可以看到比较全面的日志,尤其是错误日志
直接上代码,先看jni里面的 android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myNativeLib
LOCAL_SRC_FILES :=com_apress_threads_NDKThread.cpp
LOCAL_LDLIBS :=-llog
include $(BUILD_SHARED_LIBRARY)
头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_apress_threads_NDKThread */
#ifndef _Included_com_apress_threads_NDKThread
#define _Included_com_apress_threads_NDKThread
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_apress_threads_NDKThread
* Method: nativeInit
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_apress_threads_NDKThread_nativeInit
(JNIEnv *, jobject);
/*
* Class: com_apress_threads_NDKThread
* Method: nativeFree
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_apress_threads_NDKThread_nativeFree
(JNIEnv *, jobject);
/*
* Class: com_apress_threads_NDKThread
* Method: nativeWorker
* Signature: (II)V
*/
JNIEXPORT void JNICALL Java_com_apress_threads_NDKThread_nativeWorker
(JNIEnv *, jobject, jint, jint);
/*
* Class: com_apress_threads_NDKThread
* Method: posixThreads
* Signature: (II)V
*/
JNIEXPORT void JNICALL Java_com_apress_threads_NDKThread_posixThreads
(JNIEnv *, jobject, jint, jint);
#ifdef __cplusplus
}
#endif
#endif
cpp文件
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <android/lo