Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
CallJvm
提交
ffe64b65
C
CallJvm
项目概览
OpenDocCN
/
CallJvm
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CallJvm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ffe64b65
编写于
6月 15, 2020
作者:
X
xwhqsj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update readme.md and CMakeLists.txt
上级
a5ee720a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
6 deletion
+14
-6
README.md
README.md
+7
-6
callJvmThreadpool/CMakeLists.txt
callJvmThreadpool/CMakeLists.txt
+7
-0
未找到文件。
README.md
浏览文件 @
ffe64b65
...
...
@@ -86,7 +86,7 @@ Call JVM from C/C++ in ThreadPool Using JNI
- jni.h : java JNI接口函数
- jni_md.h : jni.h调用的必要函数
- main.cpp : 测试主程序
- pureMultithread.cpp :
干
净的多线程程序
- pureMultithread.cpp :
纯
净的多线程程序
- qin_test1.jar : 测试的jar包1
- qin_test.jar : 测试的jar包0
- server.cpp : socket服务器程序
...
...
@@ -100,6 +100,7 @@ Call JVM from C/C++ in ThreadPool Using JNI
### 程序编译
可根据CMakeLists.txt文件中的
```
shell script
cd callJvmThreadpool
cmake ..
...
...
@@ -108,13 +109,13 @@ cmake ..
### 程序目的
-
最初目的:使用C++代码
调用java编写的代码
-
中间目的:使用多线程
方式调用java
代码
-
最终目的:使用线程池
方式减少多线程带来的资源消耗调用java代码
-
最初目的:使用C++代码
通过JNI接口调用Java模块代码(实际上是启动一个JVM,在JVM中运行Java模块代码)
-
中间目的:使用多线程
技术由每次调用JNI生成一个JVM,提升为生成多个JVM线程运行Java模块
代码
-
最终目的:使用线程池
技术预先生成多个JVM线程,减少多线程调用Java模块代码带来的资源消耗
### 注意事项
-
C++
调用Java JNI是一种不得已而为之的方法,其调用开销
很大,并不值得
-
为了解决J
NI调用问题,调整为使用socket方案,使用本地文件映射,开销大大减小
-
C++
通过JNI接口调用Java模块代码是一种不得已而为之的方法,每次调用JNI启动JVM的开销都
很大,并不值得
-
为了解决J
VM “一调一用” 问题,后程序框架调整为使用UNIX Domain Socket方案,在本地进行文件数据映射,大大减小开销
### 相关内容
...
...
callJvmThreadpool/CMakeLists.txt
浏览文件 @
ffe64b65
...
...
@@ -3,8 +3,10 @@ project(callJvmThreadpool)
set
(
CMAKE_CXX_STANDARD 14
)
# 运行环境配置的java运行环境路径
include_directories
(
/usr/local/java/include /usr/local/java/include/linux
)
# 编译选项(可不修改)
add_definitions
(
-O3 -g -W -Wall
-Wunused-variable -Wunused-parameter -Wunused-function -Wunused
...
...
@@ -12,6 +14,9 @@ add_definitions(
-D__WUR= -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DTIXML_USE_STL
)
# 编译文件
# 除jni.h jni_md.h tpool.cpp tpool.h文件外,
# 下面每个文件都可选择性编译(含有main函数的文件不可同时编译)
add_executable
(
main jni.h jni_md.h tpool.cpp tpool.h
# test.cpp
# main.cpp
...
...
@@ -20,5 +25,7 @@ add_executable(main jni.h jni_md.h tpool.cpp tpool.h
socketThreadpool.cpp
)
# 链接的动态库,包括java的libjvm.so文件和linux多线程的libpthread.so文件
target_link_libraries
(
main /usr/local/java/jre/lib/amd64/server/libjvm.so /usr/lib/x86_64-linux-gnu/libpthread.so
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录