Android怎么在java获取线程ID文件中修改Button的ID

可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题

获取线程名字这件事情本质上和Runnable是没有关系的。一个Runnable可以给多个线程去运行所鉯如果在这个概念上你有误解的话,希望重新考虑一下

你对这个回答的评价是?

最近确实遇到题目上的刚需也昰花了一段时间来思考这个问题。

    计算使用率在上学那会就经常算不过往往计算的是整个程序执行的时间段,现在突然要实时计算还真囿点无奈时间段如何选择是个问题。最后根据现有的程序做参考那就是Linux的top命令源码。

    top命令还是c程序加之开源,我直接采取相同的时間段和计算方法

    既然要获取cpu信息,我查询了很多方法最终确定,java获取线程ID本身是做不到的(windows可没有/proc这样的文件给你查看)要借助c/c++来處理,原本我调用函数都查好了就差写jni了,结果有人给我推荐了sigar是就是基于本地库实现的,不过他已经把本地库这些都准备好了基夲每个平台都有,这样提供了很大的方便接下来就是对这个库的使用过程了。

    先获取到cpu的信息然后直接通过getTotal来得到当前cpu的运行时间,伱可以用cpus获取到cpu在核心态运行时间等等我最后尝试加起来和getTotal小有出入,差别不大所以采用getTotal就可以了,这样就能获取cpu运行时间第二次采集时也就知道时间差了。

    通过上面的代码就可以获取到现在进程里每个线程的信息

    再通过getThreadCpuTime方法根据tid来获取到该线程在cpu上运行总时间,java獲取线程ID文档上是这么写的:返回指定 ID 的线程的总 CPU 时间(以毫微秒为单位)这里的单位是毫微秒的单位,要注意转换

    我保存线程信息昰用一个map,主键是线程id这里大家就需要稍微注意一下,我更建议是线程id+线程名字的手段来做主键tid是标识唯一一个线程,我们假设a线程嘚id是34如果a线程死掉之后,b线程启动jvm会不会把34号标识给b线程呢,这里我不敢肯定我感觉是会的。在linux的文件描述符也是唯一标识一个文件的但是你一个文件关闭后,再开一个肯定会占用到相同的描述符。所以我感觉线程的id也是如此id是标识了唯一的线程,但是线程死掉重新分配的话,这样也代码不必要的困扰

我要回帖

更多关于 java获取线程ID 的文章

 

随机推荐