如何用java获取指定进程的线程数量

wgd81685 2017-08-17 11:47:04
如题!
ps: sigar有程序崩溃的风险,不能使用,求其他方法!
...全文
340 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgd81685 2017-08-22
  • 打赏
  • 举报
回复
补充说明:使用的句柄最后需要关闭,否则会导致句柄泄露 MyKernel32.INSTANCE.CloseHandle(hProcessSnap);
wgd81685 2017-08-17
  • 打赏
  • 举报
回复
方法已找到,使用Jna,jna-platform来调用windows api,具体方法如下 public int getCurrentProcessThreadCount() { int cnt = 0; MyKernel32 mk = MyKernel32.INSTANCE; int id = mk.GetCurrentProcessId(); HANDLE hProcessSnap = mk.CreateToolhelp32Snapshot(Tlhelp32.TH32CS_SNAPPROCESS, new WinDef.DWORD(id)); if (hProcessSnap == WinBase.INVALID_HANDLE_VALUE) { return cnt; } Tlhelp32.PROCESSENTRY32 pe32 = new Tlhelp32.PROCESSENTRY32(); boolean flag = mk.Process32First(hProcessSnap, pe32); WinDef.DWORD dword; while (flag) { dword = pe32.th32ProcessID; if (id == dword.intValue()) { cnt = pe32.cntThreads.intValue(); break; } flag = mk.Process32Next(hProcessSnap, pe32); } return cnt; }

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧