一种线程同步资源的获取方法和装置制造方法及图纸

技术编号:13603807 阅读:38 留言:0更新日期:2016-08-27 23:28
本发明专利技术提供一种线程同步资源的获取方法和装置,能满足类似于具有优先级的线程的资源调用的要求,避免了因无法及时获取到资源而造成线程无法及时执行的问题,在一定程度上降低了整个系统的运行风险;同时,对当前所有的资源的分配情况进行了记录和监控,对于日后分析程序线程资源设计是否合理提供了数据依据。本发明专利技术的线程同步资源的获取方法包括:接收线程发送的获取资源的参数;根据所述权重参数确定所述线程的权重值;根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。

【技术实现步骤摘要】

本专利技术涉及计算机及其软件
,特别涉及一种线程同步资源的获取方法和装置
技术介绍
java程序中,基于多线程的并发是很常见。为了防止因多线程对同一资源(数据对象)访问而造成数据破坏,所以有了同步(锁)的应用,从而保证每个资源在某一个时刻只能被一个线程访问,同时其他线程只能阻塞;在等待其他线程完成后,唤醒阻塞线程。由于线程的阻塞和唤醒都是随机的,而对于优先级高的线程来说,如果迟迟不能获取资源,就会造成线程无法及时执行,甚至会对整个系统产生较大的风险。现有的jvm虚拟机中对于多个线程调用同一资源的处理方式一般采用公平锁的方式,即基于线程等待资源的时间长短来唤醒等待线程;其他处理方式基本都是随机唤醒等待线程。综上所述,现有技术对于多个线程调用同一资源的处理方式采用随机或者基于等待时间的长短来唤醒阻塞的线程,对于类似于具有优先级的线程的资源调用的要求无法满足,这样不仅会因为无法及时获取到资源而造成线程无法及时执行的问题,甚至也会对整个系统运行产生较大的风险;同时,现有技术对当前所有的资源的分配情况没有记录和监控,也使得日后分析程序线程资源设计是否合理缺少了依据。
技术实现思路
有鉴于此,本专利技术提供一种线程同步资源的获取方法和装置,能够满足类似于具有优先级的线程的资源调用的要求,避免了因无法及
时获取到资源而造成线程无法及时执行的问题,在一定程度上降低了整个系统的运行风险;同时,对当前所有的资源的分配情况进行了记录和监控,对于日后分析程序线程资源设计是否合理提供了数据依据。为实现上述目的,根据本专利技术的一个方面,提供了一种线程同步资源的获取方法。本专利技术的线程同步资源的获取方法,包括:接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数;根据所述权重参数确定所述线程的权重值;根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。可选地,根据所述资源参数确定该资源是否为锁定状态的步骤之后还包括:在确定该资源为未锁定状态的前提下,将该资源提供给所述线程。可选地,所述权重参数包括权重值、权重函数或空;当所述权重参数为权重值时,所述根据所述权重参数确定所述线程的权重值的步骤包括将接收到的权重值作为该线程的权重值;当所述权重参数为权重函数时,所述根据所述权重参数确定所述线程的权重值的步骤包括:根据该权重函数计算得到该线程的权重值;当所述权重参数为空时,所述根据所述权重参数确定所述线程的权重值的步骤包括:确认所述权重参数为空,然后将默认的权重值作为该线程的权重值。可选地,所述根据所述资源参数确定该资源是否为锁定状态的步骤之前,还包括:根据所述资源参数确定是否存在该资源的调用信息,如果存在,则将该资源的调用信息中的资源消亡时长恢复为初始时长;
否则,建立该资源的调用信息,并设置该资源的资源消亡时长。可选地,所述根据所述资源参数确定该资源是否为锁定状态的步骤包括:根据所述资源参数查找该资源的资源信息;根据该资源信息中的资源锁定标识位确定该资源是否为锁定状态。可选地,接收线程发送的获取资源的参数的步骤之后,还包括:在日志文件中记录该线程申请资源的起始时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。可选地,所述将该线程放入该资源的等待队列中的步骤之后,还包括:在日志文件中记录该线程进入等待队列的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。可选地,所述将该资源提供给该等待队列中权重值最大的线程的步骤之前,还包括:在日志文件中记录线程等待完成时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。可选地,所述将该资源提供给该等待队列中权重值最大的线程的步骤之后,还包括:在日志文件中记录线程在获取到资源后的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长;所述获取到资源后的时间戳包括:资源被锁定时间戳和资源被放弃锁定的时间戳。可选地,所述将该资源提供给该等待队列中权重值最大的线程的步骤包括:将等待队列中的线程按照权重进行降序排列;将该资源提供给排在第一的线程;并且所述将等待队列中的线程按照权重进行降
序排列的步骤之后,还包括:根据接收到的线程调度指令,记录线程在所属等待队列中的位置的改变,并将位置改变后的线程的权重值修改为位置变化后该位置所对应的权重值。根据本专利技术的另一个方面,提供了一种线程同步资源的获取装置。本专利技术的线程同步资源的获取装置包括:接收模块,用于接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数;确定模块,用于根据所述权重参数确定所述线程的权重值;第一提供模块,用于根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。可选地,还包括第二提供模块,用于在确定该资源为未锁定状态的前提下,将该资源提供给所述线程。可选地,所述权重参数包括权重值、权重函数或空;当所述权重参数为权重值时,所述确定模块用于将接收到的权重值作为该线程的权重值;当所述权重参数为权重函数时,所述确定模块用于根据该权重函数计算得到该线程的权重值;当所述权重参数为空时,所述确定模块用于确认所述权重参数为空,然后将默认的权重值作为该线程的权重值。可选地,还包括信息检查模块,用于根据所述资源参数确定是否存在该资源的调用信息,如果存在,则将该资源的调用信息中的资源消亡时长恢复为初始时长;否则,建立该资源的调用信息,并设置该资源的资源消亡时长。可选地,所述第一提供模块还用于根据所述资源参数查找该资源
的资源信息,再根据该资源信息中的资源锁定标识位确定该资源是否为锁定状态。可选地,还包括第一记录模块,用于在日志文件中记录该线程申请资源的起始时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。可选地,还包括第二记录模块,用于在日志文件中记录该线程进入等待队列的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。可选地,还包括第三记录模块,用于在日志文件中记录线程等待完成时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。可选地,还包括第四记录模块,用于在日志文件中记录线程在获取到资源后的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长;所述获取到资源后的时间戳包括:资源被锁定时间戳和资源被放弃锁定的时间戳。可选地,所述第一提供模块还用于将等待队列中的线程按照权重进行降序排列,再将该资源提供给本文档来自技高网
...

【技术保护点】
一种线程同步资源的获取方法,其特征在于,包括:接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数;根据所述权重参数确定所述线程的权重值;根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。

【技术特征摘要】
1.一种线程同步资源的获取方法,其特征在于,包括:接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数;根据所述权重参数确定所述线程的权重值;根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。2.根据权利要求1所述的方法,其特征在于,根据所述资源参数确定该资源是否为锁定状态的步骤之后还包括:在确定该资源为未锁定状态的前提下,将该资源提供给所述线程。3.根据权利要求1所述的方法,其特征在于,所述权重参数包括权重值、权重函数或空;当所述权重参数为权重值时,所述根据所述权重参数确定所述线程的权重值的步骤包括将接收到的权重值作为该线程的权重值;当所述权重参数为权重函数时,所述根据所述权重参数确定所述线程的权重值的步骤包括:根据该权重函数计算得到该线程的权重值;当所述权重参数为空时,所述根据所述权重参数确定所述线程的权重值的步骤包括:确认所述权重参数为空,然后将默认的权重值作为该线程的权重值。4.根据权利要求1所述的方法,其特征在于,所述根据所述资源参数确定该资源是否为锁定状态的步骤之前,还包括:根据所述资源参数确定是否存在该资源的调用信息,如果存在,则将该资源的调用信息中的资源消亡时长恢复为初始时长;否则,建立该资源的调用信息,并设置该资源的资源消亡时长。5.根据权利要求1所述的方法,其特征在于,所述根据所述资源参数确定该资源是否为锁定状态的步骤包括:根据所述资源参数查找该资源的资源信息;根据该资源信息中的资源锁定标识位确定该资源是否为锁定状态。6.根据权利要求1所述的方法,其特征在于,接收线程发送的获取资源的参数的步骤之后,还包括:在日志文件中记录该线程申请资源的起始时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。7.根据权利要求1所述的方法,其特征在于,所述将该线程放入该资源的等待队列中的步骤之后,还包括:在日志文件中记录该线程进入等待队列的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。8.根据权利要求1所述的方法,其特征在于,所述将该资源提供给该等待队列中权重值最大的线程的步骤之前,还包括:在日志文件中记录线程等待完成时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。9.根据权利要求1所述的方法,其特征在于,所述将该资源提供给该等待队列中权重值最大的线程的步骤之后,还包括:在日志文件中记录线程在获取到资源后的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长;所述获取到资源后的时间戳包括:资源被锁定时间戳和资源被放弃锁定的时间戳。10.根据权利要求1所述的方法,其特征在于,所述将该资源提供给该等待队列中权重值最大的线程的步骤包括:将等待队列中的线程按照权重进行降序排列;将该资源提供给排在第一的线程;并且所述将等待队列中的线程按照权重进行降序排列的步骤之后,还包括:根据接收到的线程调度指令,记录线程在所属等待队列中的位置的改变,并将位置改变后的线程的权重值修改为位置变化后该位置所对应的权重值。11.一种线程同步资源的获取装置,其特征在于,包括:接收模块,用于接...

【专利技术属性】
技术研发人员:魏亚文孙政
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1