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

文档序号:10534590阅读:163来源:国知局
一种线程同步资源的获取方法和装置的制造方法
【专利摘要】本发明提供一种线程同步资源的获取方法和装置,能满足类似于具有优先级的线程的资源调用的要求,避免了因无法及时获取到资源而造成线程无法及时执行的问题,在一定程度上降低了整个系统的运行风险;同时,对当前所有的资源的分配情况进行了记录和监控,对于日后分析程序线程资源设计是否合理提供了数据依据。本发明的线程同步资源的获取方法包括:接收线程发送的获取资源的参数;根据所述权重参数确定所述线程的权重值;根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。
【专利说明】
一种线程同步资源的获取方法和装置
技术领域
[0001]本发明涉及计算机及其软件技术领域,特别涉及一种线程同步资源的获取方法和
目.0
【背景技术】
[0002]java程序中,基于多线程的并发是很常见。为了防止因多线程对同一资源(数据对象)访问而造成数据破坏,所以有了同步(锁)的应用,从而保证每个资源在某一个时刻只能被一个线程访问,同时其他线程只能阻塞;在等待其他线程完成后,唤醒阻塞线程。
[0003]由于线程的阻塞和唤醒都是随机的,而对于优先级高的线程来说,如果迟迟不能获取资源,就会造成线程无法及时执行,甚至会对整个系统产生较大的风险。现有的jvm虚拟机中对于多个线程调用同一资源的处理方式一般采用公平锁的方式,即基于线程等待资源的时间长短来唤醒等待线程;其他处理方式基本都是随机唤醒等待线程。
[0004]综上所述,现有技术对于多个线程调用同一资源的处理方式采用随机或者基于等待时间的长短来唤醒阻塞的线程,对于类似于具有优先级的线程的资源调用的要求无法满足,这样不仅会因为无法及时获取到资源而造成线程无法及时执行的问题,甚至也会对整个系统运行产生较大的风险;同时,现有技术对当前所有的资源的分配情况没有记录和监控,也使得日后分析程序线程资源设计是否合理缺少了依据。

【发明内容】

[0005]有鉴于此,本发明提供一种线程同步资源的获取方法和装置,能够满足类似于具有优先级的线程的资源调用的要求,避免了因无法及时获取到资源而造成线程无法及时执行的问题,在一定程度上降低了整个系统的运行风险;同时,对当前所有的资源的分配情况进行了记录和监控,对于日后分析程序线程资源设计是否合理提供了数据依据。
[0006]为实现上述目的,根据本发明的一个方面,提供了一种线程同步资源的获取方法。
[0007]本发明的线程同步资源的获取方法,包括:接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数;根据所述权重参数确定所述线程的权重值;根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。
[0008]可选地,根据所述资源参数确定该资源是否为锁定状态的步骤之后还包括:在确定该资源为未锁定状态的前提下,将该资源提供给所述线程。
[0009]可选地,所述权重参数包括权重值、权重函数或空;当所述权重参数为权重值时,所述根据所述权重参数确定所述线程的权重值的步骤包括将接收到的权重值作为该线程的权重值;当所述权重参数为权重函数时,所述根据所述权重参数确定所述线程的权重值的步骤包括:根据该权重函数计算得到该线程的权重值;当所述权重参数为空时,所述根据所述权重参数确定所述线程的权重值的步骤包括:确认所述权重参数为空,然后将默认的权重值作为该线程的权重值。
[0010]可选地,所述根据所述资源参数确定该资源是否为锁定状态的步骤之前,还包括:根据所述资源参数确定是否存在该资源的调用信息,如果存在,则将该资源的调用信息中的资源消亡时长恢复为初始时长;否则,建立该资源的调用信息,并设置该资源的资源消亡时长。
[0011]可选地,所述根据所述资源参数确定该资源是否为锁定状态的步骤包括:根据所述资源参数查找该资源的资源信息;根据该资源信息中的资源锁定标识位确定该资源是否为锁定状态。
[0012]可选地,接收线程发送的获取资源的参数的步骤之后,还包括:在日志文件中记录该线程申请资源的起始时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。
[0013]可选地,所述将该线程放入该资源的等待队列中的步骤之后,还包括:在日志文件中记录该线程进入等待队列的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。
[0014]可选地,所述将该资源提供给该等待队列中权重值最大的线程的步骤之前,还包括:在日志文件中记录线程等待完成时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。
[0015]可选地,所述将该资源提供给该等待队列中权重值最大的线程的步骤之后,还包括:在日志文件中记录线程在获取到资源后的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长;所述获取到资源后的时间戳包括:资源被锁定时间戳和资源被放弃锁定的时间戳。
[0016]可选地,所述将该资源提供给该等待队列中权重值最大的线程的步骤包括:将等待队列中的线程按照权重进行降序排列;将该资源提供给排在第一的线程;并且所述将等待队列中的线程按照权重进行降序排列的步骤之后,还包括:根据接收到的线程调度指令,记录线程在所属等待队列中的位置的改变,并将位置改变后的线程的权重值修改为位置变化后该位置所对应的权重值。
[0017]根据本发明的另一个方面,提供了一种线程同步资源的获取装置。
[0018]本发明的线程同步资源的获取装置包括:接收模块,用于接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数;确定模块,用于根据所述权重参数确定所述线程的权重值;第一提供模块,用于根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。
[0019]可选地,还包括第二提供模块,用于在确定该资源为未锁定状态的前提下,将该资源提供给所述线程。
[0020]可选地,所述权重参数包括权重值、权重函数或空;当所述权重参数为权重值时,所述确定模块用于将接收到的权重值作为该线程的权重值;当所述权重参数为权重函数时,所述确定模块用于根据该权重函数计算得到该线程的权重值;当所述权重参数为空时,所述确定模块用于确认所述权重参数为空,然后将默认的权重值作为该线程的权重值。
[0021]可选地,还包括信息检查模块,用于根据所述资源参数确定是否存在该资源的调用信息,如果存在,则将该资源的调用信息中的资源消亡时长恢复为初始时长;否则,建立该资源的调用信息,并设置该资源的资源消亡时长。
[0022]可选地,所述第一提供模块还用于根据所述资源参数查找该资源的资源信息,再根据该资源信息中的资源锁定标识位确定该资源是否为锁定状态。
[0023]可选地,还包括第一记录模块,用于在日志文件中记录该线程申请资源的起始时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。
[0024]可选地,还包括第二记录模块,用于在日志文件中记录该线程进入等待队列的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。
[0025]可选地,还包括第三记录模块,用于在日志文件中记录线程等待完成时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。
[0026]可选地,还包括第四记录模块,用于在日志文件中记录线程在获取到资源后的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长;所述获取到资源后的时间戳包括:资源被锁定时间戳和资源被放弃锁定的时间戳。
[0027]可选地,所述第一提供模块还用于将等待队列中的线程按照权重进行降序排列,再将该资源提供给排在第一的线程;并且所述装置还包括线程调度模块,用于根据接收到的线程调度指令,记录线程在所属等待队列中的位置的改变,并将位置改变后的线程的权重值修改为位置变化后该位置所对应的权重值。
[0028]根据本发明的又一个方面,提供了一种线程同步资源的获取装置。
[0029]本发明的线程同步资源的获取装置,包括:存储器和处理器;其中,所述存储器存储指令;所述处理器执行所述指令,用于:接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数;根据所述权重参数确定所述线程的权重值;根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。
[0030]根据本发明的技术方案,由于是基于线程的权重值来对等待的线程进行唤醒,因此能够满足类似于具有优先级的线程的资源调用的要求,避免了因无法及时获取到资源而造成线程无法及时执行的问题,在一定程度上降低了整个系统的运行风险;同时,在线程等待和调用过程中,对当前所有的资源的分配情况进行了记录和监控,因而对于日后分析程序线程资源设计是否合理提供了数据依据;并且该技术方案还可以对等待队列中的线程等待顺序进行改变,因而,也在一定程度上提高了资源调度的灵活性。
【附图说明】
[0031]附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0032]图1是根据本发明实施例的一种线程同步资源的获取装置的示意图;
[0033]图2是根据本发明实施例的一种线程同步资源的获取方法的示意图;
[0034]图3是根据本发明实施例的另一种线程同步资源的获取方法的示意图。
【具体实施方式】
[0035]以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识至IJ,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0036]图1是根据本发明实施例的一种线程同步资源的获取装置的示意图。本发明实施例的线程同步资源的获取装置10主要包括:接收模块11、确定模块12、以及第一提供模块13;接收模块11用于接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数;确定模块12用于根据所述权重参数确定所述线程的权重值;第一提供模块13用于根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。
[0037]本发明实施例的线程同步资源的获取装置10还可包括第二提供模块,用于在确定该资源为未锁定状态的前提下,将该资源提供给所述线程。
[0038]本发明实施例中所提到的权重参数可以是权重值、权重函数或空;
[0039]当所述权重参数为权重值时,确定模块12用于将接收到的权重值作为该线程的权重值;
[0040]当所述权重参数为权重函数时,确定模块12用于根据该权重函数计算得到该线程的权重值;
[0041]当所述权重参数为空时,确定模块12用于确认所述权重参数为空,然后将默认的权重值作为该线程的权重值。
[0042]本发明实施例的线程同步资源的获取装置10还可包括信息检查模块(图中未示出),用于根据所述资源参数确定是否存在该资源的调用信息,如果存在,则将该资源的调用信息中的资源消亡时长恢复为初始时长;否则,建立该资源的调用信息,并设置该资源的资源消亡时长。
[0043]本发明实施例的线程同步资源的获取装置10的第一提供模块13还可用于根据所述资源参数查找该资源的资源信息,再根据该资源信息中的资源锁定标识位确定该资源是否为锁定状态。
[0044]本发明实施例的线程同步资源的获取装置10还可包括第一记录模块(图中未示出),用于在日志文件中记录该线程申请资源的起始时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。
[0045]本发明实施例的线程同步资源的获取装置10还可包括第二记录模块(图中未示出),用于在日志文件中记录该线程进入等待队列的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。
[0046]本发明实施例的线程同步资源的获取装置10还可包括第三记录模块(图中未示出),用于在日志文件中记录线程等待完成时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。
[0047]本发明实施例的线程同步资源的获取装置10还可包括第四记录模块(图中未示出),用于在日志文件中记录线程在获取到资源后的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长;所述获取到资源后的时间戳包括:资源被锁定时间戳和资源被放弃锁定的时间戳。
[0048]本发明实施例的线程同步资源的获取装置10的第一提供模块13还可用于将等待队列中的线程按照权重进行降序排列,再将该资源提供给排在第一的线程;
[0049]并且所述装置还可包括线程调度模块(图中未示出),用于根据接收到的线程调度指令,记录线程在所属等待队列中的位置的改变,并将位置改变后的线程的权重值修改为位置变化后该位置所对应的权重值。
[0050]图2是根据本发明实施例的一种线程同步资源的获取方法的示意图。如图2所示,本发明实施例的线程同步资源的获取方法的执行主体为图1中所提到的线程同步资源的获取装置10,该方法主要包括如下步骤S20至S24。
[0051]步骤S20:接收线程发送的获取资源的参数。该步骤中所提到的获取资源的参数包括:资源参数和权重参数;当线程需要调用资源时,需要将所要调用资源的资源参数和该线程的权重参数发送给线程同步资源的获取装置10;同时,线程同步资源的获取装置10在日志文件中记录该线程申请资源的起始时间戳。
[0052]步骤S21:根据所述权重参数确定所述线程的权重值。在该步骤中,线程同步资源的获取装置10在接收到线程发送的资源参数和权重参数后,根据其中的权重参数确定该线程的权重值;权重参数可以为权重值、权重函数或空;当权重参数为权重值时(例如,接收到的权重值为8,假设权重值的取值范围为[I,10]),那么,线程同步资源的获取装置10将接收到的权重值8作为该线程的权重值;当权重参数为权重函数时,线程同步资源的获取装置10根据接收到的权重函数计算出相应的权重值,并将计算得到的权重值作为该线程的权重值;当权重参数为空时,线程同步资源的获取装置10首先确认所接收到的权重参数为空,然后将默认的权重值作为该线程的权重值。
[0053]步骤S22:根据所述资源参数确定该资源是否为锁定状态,如果该资源为锁定状态,则执行步骤S23;否则,执行步骤S24。由于在线程调用资源的过程当中经常会出现同一个资源需要被多个线程调用的情形,因此为了保证每个资源在某一个时刻只能被一个线程访问,需要在资源被线程调用时将资源进行锁定;在步骤S22中,线程同步资源的获取装置10根据所接收到的资源参数查找该资源的资源信息,并根据该资源信息中的资源锁定标识位确定该资源是否为锁定状态。
[0054]步骤S23:将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。在该步骤中,线程同步资源的获取装置10将该资源等待队列中的线程按照权重值的大小进行降序排列,并且在日志文件中记录该线程进入等待队列的时间戳;在该资源被解锁的情况下,在日志文件中记录权重值排在第一的线程的等待完成时间戳;最后将该资源提供给该等待队列中权重值排在第一的线程,并在日志文件中记录线程在获取到资源后的时间戳,其中,线程在获取到资源后的时间戳包括:资源被锁定时间戳和资源被放弃锁定的时间戳;线程同步资源的获取装置10可定时将日志文件中所记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长,用于监控和记录资源的分配和调用情况,并在日后分析程序线程资源设计是否合理时提供数据依据。
[0055]步骤S24:将该资源直接提供给所述线程。
[0056]在本发明实施例的技术方案中,为了能够对内存中的资源数据进行清理,因此,对在内存中的资源设定了对应的资源消亡时长,可以在资源长时间不被调用的前提下,定时清理内存,节约内存空间;线程同步资源的获取装置10根据所接收到的资源参数确定是否存在该资源的调用信息,如果存在,则将该资源的调用信息中的资源消亡时长恢复为初始时长;否则,建立该资源的调用信息,并设置该资源的资源消亡时长。线程同步资源的获取装置10在资源没有被调用并且资源消亡时长为O时,将该资源进行清除。
[0057]本发明实施例的技术方案中,线程同步资源的获取装置10可根据接收到的线程调度指令,记录线程在所属等待队列中的位置的改变,并将位置改变后的线程的权重值修改为位置变化后该位置所对应的权重值。线程同步资源的获取装置10可自带一个终端界面,用于显示当前被调用的资源、资源对应的等待队列中的等待线程、以及根据数据库中所记录的时间戳所统计得到的线程的平均等待时长和平均执行时长等信息,用户可以通过操作终端界面通过拖拽的方式将资源等待队列中的线程的等待顺序进行改变,从而生成对应的线程调度指令,并根据该线程调度指令记录线程在所属等待队列中的位置的改变,并将位置改变后的线程的权重值修改为位置变化后该位置所对应的权重值。例如:一个资源的等待队列中有三个等待的线程,即线程1(权重值为9)、线程2(权重值为8)、以及线程3(权重值为7);如果此时线程2需要先执行,那么,可以拖拽的方式将线程2放置到线程I的位置,线程同步资源的获取装置10记录线程2位置的改变,并且将线程2的权重值该为原来处于该位置的线程I的权重值,而将线程I的权重值该为原来处于第二的线程2的权重值。
[0058]图3是根据本发明实施例的另一种线程同步资源的获取方法的示意图。如图3所示,本发明的线程同步资源的获取装置30主要包括存储器31和处理器32;其中,所述存储器31存储指令;所述处理器32执行所述指令,用于接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数;根据所述权重参数确定所述线程的权重值;根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。
[0059]根据本发明实施例的技术方案,由于是基于线程的权重值来对等待的线程进行唤醒,因此能够满足类似于具有优先级的线程的资源调用的要求,避免了因无法及时获取到资源而造成线程无法及时执行的问题,在一定程度上降低了整个系统的运行风险;同时,在线程等待和调用过程中,对当前所有的资源的分配情况进行了记录和监控,因而对于日后分析程序线程资源设计是否合理提供了数据依据;并且该技术方案还可以对等待队列中的线程等待顺序进行改变,因而,也在一定程度上提高了资源调度的灵活性。
[0060]上述【具体实施方式】,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
【主权项】
1.一种线程同步资源的获取方法,其特征在于,包括: 接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数; 根据所述权重参数确定所述线程的权重值; 根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。2.根据权利要求1所述的方法,其特征在于,根据所述资源参数确定该资源是否为锁定状态的步骤之后还包括:在确定该资源为未锁定状态的前提下,将该资源提供给所述线程。3.根据权利要求1所述的方法,其特征在于,所述权重参数包括权重值、权重函数或空; 当所述权重参数为权重值时,所述根据所述权重参数确定所述线程的权重值的步骤包括将接收到的权重值作为该线程的权重值; 当所述权重参数为权重函数时,所述根据所述权重参数确定所述线程的权重值的步骤包括:根据该权重函数计算得到该线程的权重值; 当所述权重参数为空时,所述根据所述权重参数确定所述线程的权重值的步骤包括:确认所述权重参数为空,然后将默认的权重值作为该线程的权重值。4.根据权利要求1所述的方法,其特征在于,所述根据所述资源参数确定该资源是否为锁定状态的步骤之前,还包括:根据所述资源参数确定是否存在该资源的调用信息,如果存在,则将该资源的调用信息中的资源消亡时长恢复为初始时长;否则,建立该资源的调用信息,并设置该资源的资源消亡时长。5.根据权利要求1所述的方法,其特征在于,所述根据所述资源参数确定该资源是否为锁定状态的步骤包括: 根据所述资源参数查找该资源的资源信息; 根据该资源信息中的资源锁定标识位确定该资源是否为锁定状态。6.根据权利要求1所述的方法,其特征在于,接收线程发送的获取资源的参数的步骤之后,还包括:在日志文件中记录该线程申请资源的起始时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。7.根据权利要求1所述的方法,其特征在于,所述将该线程放入该资源的等待队列中的步骤之后,还包括:在日志文件中记录该线程进入等待队列的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。8.根据权利要求1所述的方法,其特征在于,所述将该资源提供给该等待队列中权重值最大的线程的步骤之前,还包括:在日志文件中记录线程等待完成时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。9.根据权利要求1所述的方法,其特征在于,所述将该资源提供给该等待队列中权重值最大的线程的步骤之后,还包括:在日志文件中记录线程在获取到资源后的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长;所述获取到资源后的时间戳包括:资源被锁定时间戳和资源被放弃锁定的时间戳。10.根据权利要求1所述的方法,其特征在于,所述将该资源提供给该等待队列中权重值最大的线程的步骤包括: 将等待队列中的线程按照权重进行降序排列; 将该资源提供给排在第一的线程; 并且所述将等待队列中的线程按照权重进行降序排列的步骤之后,还包括:根据接收到的线程调度指令,记录线程在所属等待队列中的位置的改变,并将位置改变后的线程的权重值修改为位置变化后该位置所对应的权重值。11.一种线程同步资源的获取装置,其特征在于,包括: 接收模块,用于接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数; 确定模块,用于根据所述权重参数确定所述线程的权重值; 第一提供模块,用于根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。12.根据权利要求11所述的装置,其特征在于,还包括第二提供模块,用于在确定该资源为未锁定状态的前提下,将该资源提供给所述线程。13.根据权利要求11所述的装置,其特征在于,所述权重参数包括权重值、权重函数或空; 当所述权重参数为权重值时,所述确定模块用于将接收到的权重值作为该线程的权重值; 当所述权重参数为权重函数时,所述确定模块用于根据该权重函数计算得到该线程的权重值; 当所述权重参数为空时,所述确定模块用于确认所述权重参数为空,然后将默认的权重值作为该线程的权重值。14.根据权利要求11所述的装置,其特征在于,还包括信息检查模块,用于根据所述资源参数确定是否存在该资源的调用信息,如果存在,则将该资源的调用信息中的资源消亡时长恢复为初始时长;否则,建立该资源的调用信息,并设置该资源的资源消亡时长。15.根据权利要求11所述的装置,其特征在于,所述第一提供模块还用于根据所述资源参数查找该资源的资源信息,再根据该资源信息中的资源锁定标识位确定该资源是否为锁定状态。16.根据权利要求11所述的装置,其特征在于,还包括第一记录模块,用于在日志文件中记录该线程申请资源的起始时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。17.根据权利要求11所述的装置,其特征在于,还包括第二记录模块,用于在日志文件中记录该线程进入等待队列的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。18.根据权利要求11所述的装置,其特征在于,还包括第三记录模块,用于在日志文件中记录线程等待完成时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长。19.根据权利要求11所述的装置,其特征在于,还包括第四记录模块,用于在日志文件中记录线程在获取到资源后的时间戳,然后将记录的时间戳存储于数据库中,再根据数据库中记录的时间戳统计线程的平均等待时长和线程的平均执行时长;所述获取到资源后的时间戳包括:资源被锁定时间戳和资源被放弃锁定的时间戳。20.根据权利要求11所述的装置,其特征在于,所述第一提供模块还用于将等待队列中的线程按照权重进行降序排列,再将该资源提供给排在第一的线程; 并且所述装置还包括线程调度模块,用于根据接收到的线程调度指令,记录线程在所属等待队列中的位置的改变,并将位置改变后的线程的权重值修改为位置变化后该位置所对应的权重值。21.—种线程同步资源的获取装置,其特征在于,包括:存储器和处理器;其中,所述存储器存储指令; 所述处理器执行所述指令,用于: 接收线程发送的获取资源的参数;所述获取资源的参数包括:资源参数和权重参数; 根据所述权重参数确定所述线程的权重值; 根据所述资源参数确定该资源是否为锁定状态,在确定该资源为锁定状态的前提下,将所述线程的状态修改为阻塞状态,然后将该线程放入该资源的等待队列中,在该资源被解锁的情况下,将该资源提供给该等待队列中权重值最大的线程。
【文档编号】G06F9/50GK105893120SQ201610249861
【公开日】2016年8月24日
【申请日】2016年4月21日
【发明人】魏亚文, 孙政
【申请人】北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1