[发明专利]一种Java线程的获取方法、装置、介质和电子设备有效
申请号: | 201911031683.6 | 申请日: | 2019-10-28 |
公开(公告)号: | CN110908860B | 公开(公告)日: | 2023-06-09 |
发明(设计)人: | 刘洪凯 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 北京国昊天诚知识产权代理有限公司 11315 | 代理人: | 马瑞 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 java 线程 获取 方法 装置 介质 电子设备 | ||
本发明提供了一种Java线程的获取方法、装置、介质和电子设备,所述获取方法包括:根据第一预设方法进行预处理,得到任一线程对象;对任一线程对象进行运算,得到对应的linux系统下的线程值;判断任一线程对象对应的linux系统下的线程值是否与目标linux系统下的线程值相同,若任一线程对象对应的linux系统下的线程值与目标linux系统下的线程值相同,则当前线程对象为求取的线程对象。本发明通过判断任一线程对象对应的linux系统下的线程值是否与目标linux系统下的线程值相同,若二者相同,则当前线程对象为求取的线程对象,这样,能够准确地获取linux系统下的线程值对应的java的线程对象,不会存在找错的情况。
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种Java线程的获取方法、装置、介质和电子设备。
背景技术
在安卓系统中我们有时需要得到一个linux系统下的线程值(也就是tid)对应的java的Thread对象(比如发生native崩溃后就需要根据tid获取其对应的java的Thread对象),但是并没有公开的方法能够获取一个tid对应的java的Thread对象。现有技术一般是读取/proc/self/task/[tid]/comm文件得到线程的名字,然后在java层枚举出所有的Thread对象,检查哪个Thread对象的名字与读取到的名字相匹配。
不过现有的这种方法有很大的缺点:
缺点1:/proc/self/task/[tid]/comm文件中存储的字符个数是受限的(通常最多能够存储15个有效字符),如果两个Thread对象的前半段名字相同,那么就容易找错线程对象,例如,Thread对象。
缺点2:java允许存在两个名字完全相同的Thread,这样导致现有的方法更加容易找错线程对象,例如,Thread对象。
因此,在长期的研发当中,发明人对Java线程的获取方法进行了大量的研究,提出了一种Java线程的获取方法,以解决上述技术问题之一。
发明内容
本发明的目的在于提供一种Java线程的获取方法、装置、介质和电子设备,能够解决上述提到的至少一个技术问题。具体方案如下:
根据本发明的具体实施方式,第一方面,本发明提供一种Java线程的获取方法,包括:
根据第一预设方法进行预处理,得到任一线程对象;
对任一线程对象进行运算,得到对应的linux系统下的线程值;
判断任一线程对象对应的linux系统下的线程值是否与目标linux系统下的线程值相同,若任一线程对象对应的linux系统下的线程值与目标linux系统下的线程值相同,则当前线程对象为求取的线程对象。
根据本发明的具体实施方式,第二方面,本发明提供一种Java线程的获取装置,包括:
预处理单元,用于根据第一预设方法进行预处理,得到任一线程对象;
运算单元,用于对所述预处理单元得到的任一线程对象进行运算,得到对应的linux系统下的线程值;
处理单元,用于判断所述运算单元运算得到的任一线程对象对应的linux系统下的线程值是否与目标linux系统下的线程值相同,若任一线程对象对应的linux系统下的线程值与目标linux系统下的线程值相同,则当前线程对象为求取的线程对象。
根据本发明的具体实施方式,第三方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上任一项所述的Java线程的获取方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911031683.6/2.html,转载请声明来源钻瓜专利网。