CN114675968A - 一种线程运行方法、系统、装置及可读存储介质 - Google Patents
一种线程运行方法、系统、装置及可读存储介质 Download PDFInfo
- Publication number
- CN114675968A CN114675968A CN202210302310.3A CN202210302310A CN114675968A CN 114675968 A CN114675968 A CN 114675968A CN 202210302310 A CN202210302310 A CN 202210302310A CN 114675968 A CN114675968 A CN 114675968A
- Authority
- CN
- China
- Prior art keywords
- thread
- variable
- target variable
- operation instruction
- volaile
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000015654 memory Effects 0.000 claims abstract description 34
- 238000004590 computer program Methods 0.000 claims description 9
- 230000001360 synchronised effect Effects 0.000 abstract description 8
- 230000003936 working memory Effects 0.000 description 10
- 230000000694 effects Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种线程运行方法、系统、装置及可读存储介质,应用于信息任务处理领域,该方法包括:利用关键字volatile对目标变量定义volatile变量;当任一线程收到目标变量的操作指令,通过对应的volatile变量直接在主内存中对目标变量进行相应的操作;操作指令包括读操作指令、和/或写操作指令、和/或删除操作指令。本申请的线程运行方法,利用关键字volatile的特性实现在主内存中直接操作目标变量的动作,不需要synchronized关键字进行全局变量锁定,volatile变量缩短了全局变量的控制路径,在主内存中的操作保证了目标变量的线程运行唯一性,确保了线程运行时目标变量的安全控制。
Description
技术领域
本发明涉及信息任务处理领域,特别涉及一种线程运行方法、系统、装置及可读存储介质。
背景技术
当前,在服务器的信息任务处理中,变量的范围控制极为重要,无法正确地使用全局变量或局部变量,会产生各种问题,例如线程之间的数据混乱、业务错乱,进而信息处理出错等。目前常用的全局变量控制,一般通过synchronized关键字实现,但这种悲观锁的性能极低,用户体验较差。
因此,如何提供一种解决上述技术问题的方案是目前本领域技术人员需要解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种控制效果较好的线程运行方法、系统、装置及可读存储介质。其具体方案如下:
一种线程运行方法,包括:
利用关键字volatile对目标变量定义volatile变量;
当任一线程收到所述目标变量的操作指令,通过对应的所述volatile变量直接在主内存中对所述目标变量进行相应的操作;
所述操作指令包括读操作指令、和/或写操作指令、和/或删除操作指令。
优选的,所述线程运行方法还包括:
当任一所述线程访问所述目标变量,将对应的所述volatile变量设置为访问状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的访问,将对应的所述volatile变量恢复为未访问状态。
优选的,所述线程运行方法还包括:
当任一所述线程对所述目标变量进行写操作,将对应的所述volatile变量设置为写入状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的写操作,将对应的所述volatile变量恢复为无写入状态。
优选的,所述线程包括Java程序的垃圾回收整理线程。
优选的,所述线程包括AI资源管理平台的服务线程。
相应的,本申请还公开了一种线程运行系统,包括:
定义模块,用于利用关键字volatile对目标变量定义volatile变量;
动作模块,用于当任一线程收到所述目标变量的操作指令,通过对应的所述volatile变量直接在主内存中对所述目标变量进行相应的操作;
所述操作指令包括读操作指令、和/或写操作指令、和/或删除操作指令。
优选的,动作模块还用于:
当任一所述线程访问所述目标变量,将对应的所述volatile变量设置为访问状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的访问,将对应的所述volatile变量恢复为未访问状态。
优选的,动作模块还用于:
当任一所述线程对所述目标变量进行写操作,将对应的所述volatile变量设置为写入状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的写操作,将对应的所述volatile变量恢复为无写入状态。
相应的,本申请还公开了一种线程运行装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述线程运行方法的步骤。
相应的,本申请还公开了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任一项所述线程运行方法的步骤。
本申请公开了一种线程运行方法,包括:利用关键字volatile对目标变量定义volatile变量;当任一线程收到所述目标变量的操作指令,通过对应的所述volatile变量直接在主内存中对所述目标变量进行相应的操作;所述操作指令包括读操作指令、和/或写操作指令、和/或删除操作指令。本申请的线程运行方法,利用关键字volatile的特性,实现在主内存中直接操作目标变量的动作,从而避免了现有技术中先将变量从主内存中加载到工作内存、在工作内存中操作后再保存到主内存的过程,因此不需要synchronized关键字进行全局变量锁定,volatile变量缩短了全局变量的控制路径,在主内存中的操作保证了目标变量的线程运行唯一性,确保了线程运行时目标变量的安全控制。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例中一种线程运行方法的步骤流程图;
图2为本发明实施例中一种线程运行系统的结构分布图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在服务器的信息任务处理中,变量的范围控制极为重要,无法正确地使用全局变量或局部变量,会产生各种问题,例如线程之间的数据混乱、业务错乱,进而信息处理出错等。目前常用的全局变量控制,一般通过synchronized关键字实现,但这种悲观锁的性能极低,用户体验较差。
本申请实施例利用关键字volatile的特性,实现在主内存中直接操作目标变量的动作,从而避免了现有技术中先将变量从主内存中加载到工作内存、在工作内存中操作后再保存到主内存的过程,因此不需要synchronized关键字进行全局变量锁定,volatile变量缩短了全局变量的控制路径,在主内存中的操作保证了目标变量的线程运行唯一性,确保了线程运行时目标变量的安全控制。
本发明实施例公开了一种线程运行方法,参见图1所示,包括:
S1:利用关键字volatile对目标变量定义volatile变量;
S2:当任一线程收到所述目标变量的操作指令,通过对应的所述volatile变量直接在主内存中对所述目标变量进行相应的操作;
所述操作指令包括读操作指令、和/或写操作指令、和/或删除操作指令。
具体的,这里的线程包括根据实际应用环境生成的各类线程,例如Java程序的垃圾回收整理线程,或线程包括AI资源管理平台的服务线程,也包括其他应用场景下的线程,此处不做限定。
可以理解的是,通常情况下线程在对变量进行操作时,先将变量从共享的主内存拷贝到线程本地私有的工作内存,然后再修改该变量,修改后再同步到主内存,该步骤繁琐耗时,性能极低,并不能完全保证唯一线程对该变量的使用。因此本实施例中通过volatile变量,可直接在主内存中对目标变量进行操作,避免了先将变量从共享的主内存拷贝到线程本地私有的工作内存的这一步,从而提高了变量处理效率,也进一步保证了变量的线程唯一性。
进一步的,可通过设置volatile变量的状态来避免其他线程的访问操作,访问操作包括写操作和读操作,如果所有访问操作均要求线程唯一运行,则所述线程运行方法还包括:
当任一所述线程访问所述目标变量,将对应的所述volatile变量设置为访问状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的访问,将对应的所述volatile变量恢复为未访问状态。
假设当前volatile变量设定为非访问状态,具体的程序语言为public volatilestatic Boolean flag=false,当线程A访问该目标变量,将其状态flag设置为访问状态true,在线程A未执行完毕之前,线程B欲访问该目标变量,当读取到该volatile变量的flag为访问状态true,则B无法访问该目标变量;当线程A执行完毕后,线程A将volatile变量的状态flag恢复为非访问状态flase,则其他线程在读取到该volatile为非访问状态,则可由某一线程访问该目标变量。需要注意的是,一个线程来访问目标变量和控制volatile变量的状态,一旦存在线程正在访问目标变量,其余线程只能排队等待。
类似的,如果允许读操作并行发生,仅在写操作要求时线程唯一运行,则所述线程运行方法还包括:
当任一所述线程对所述目标变量进行写操作,将对应的所述volatile变量设置为写入状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的写操作,将对应的所述volatile变量恢复为无写入状态。
本申请实施例公开了一种线程运行方法,包括:利用关键字volatile对目标变量定义volatile变量;当任一线程收到所述目标变量的操作指令,通过对应的所述volatile变量直接在主内存中对所述目标变量进行相应的操作;所述操作指令包括读操作指令、和/或写操作指令、和/或删除操作指令。本申请的线程运行方法,利用关键字volatile的特性,实现在主内存中直接操作目标变量的动作,从而避免了现有技术中先将变量从主内存中加载到工作内存、在工作内存中操作后再保存到主内存的过程,因此不需要synchronized关键字进行全局变量锁定,volatile变量缩短了全局变量的控制路径,在主内存中的操作保证了目标变量的线程运行唯一性,确保了线程运行时目标变量的安全控制。
相应的,本申请实施例还公开了一种线程运行系统,参加图2所示,包括:
定义模块1,用于利用关键字volatile对目标变量定义volatile变量;
动作模块2,用于当任一线程收到所述目标变量的操作指令,通过对应的所述volatile变量直接在主内存中对所述目标变量进行相应的操作;
所述操作指令包括读操作指令、和/或写操作指令、和/或删除操作指令。
在一些具体的实施例中,动作模块2还用于:
当任一所述线程访问所述目标变量,将对应的所述volatile变量设置为访问状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的访问,将对应的所述volatile变量恢复为未访问状态。
在一些具体的实施例中,动作模块2还用于:
当任一所述线程对所述目标变量进行写操作,将对应的所述volatile变量设置为写入状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的写操作,将对应的所述volatile变量恢复为无写入状态。
在一些具体的实施例中,所述线程包括Java程序的垃圾回收整理线程。
在一些具体的实施例中,所述线程包括AI资源管理平台的服务线程。
本实施例利用关键字volatile的特性,实现在主内存中直接操作目标变量的动作,从而避免了现有技术中先将变量从主内存中加载到工作内存、在工作内存中操作后再保存到主内存的过程,因此不需要synchronized关键字进行全局变量锁定,volatile变量缩短了全局变量的控制路径,在主内存中的操作保证了目标变量的线程运行唯一性,确保了线程运行时目标变量的安全控制。
相应的,本申请还公开了一种线程运行装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述线程运行方法的步骤。
相应的,本申请还公开了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任一项所述线程运行方法的步骤。
其中,本实施例中有关线程运行方法的具体内容,可以参照上文实施例中的细节描述,此处不再赘述。
其中,本实施例中线程运行装置和可读存储介质具有与上文实施例中线程运行方法相同的技术效果,此处不再赘述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种线程运行方法、系统、装置及可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种线程运行方法,其特征在于,包括:
利用关键字volatile对目标变量定义volatile变量;
当任一线程收到所述目标变量的操作指令,通过对应的所述volatile变量直接在主内存中对所述目标变量进行相应的操作;
所述操作指令包括读操作指令、和/或写操作指令、和/或删除操作指令。
2.根据权利要求1所述线程运行方法,其特征在于,还包括:
当任一所述线程访问所述目标变量,将对应的所述volatile变量设置为访问状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的访问,将对应的所述volatile变量恢复为未访问状态。
3.根据权利要求1所述线程运行方法,其特征在于,还包括:
当任一所述线程对所述目标变量进行写操作,将对应的所述volatile变量设置为写入状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的写操作,将对应的所述volatile变量恢复为无写入状态。
4.根据权利要求1所述线程运行方法,其特征在于,所述线程包括Java程序的垃圾回收整理线程。
5.根据权利要求1所述线程运行方法,其特征在于,所述线程包括AI资源管理平台的服务线程。
6.一种线程运行系统,其特征在于,包括:
定义模块,用于利用关键字volatile对目标变量定义volatile变量;
动作模块,用于当任一线程收到所述目标变量的操作指令,通过对应的所述volatile变量直接在主内存中对所述目标变量进行相应的操作;
所述操作指令包括读操作指令、和/或写操作指令、和/或删除操作指令。
7.根据权利要求6所述线程运行系统,其特征在于,动作模块还用于:
当任一所述线程访问所述目标变量,将对应的所述volatile变量设置为访问状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的访问,将对应的所述volatile变量恢复为未访问状态。
8.根据权利要求6所述线程运行系统,其特征在于,动作模块还用于:
当任一所述线程对所述目标变量进行写操作,将对应的所述volatile变量设置为写入状态,以避免其他所述线程访问所述目标变量;
当任一所述线程结束对所述目标变量的写操作,将对应的所述volatile变量恢复为无写入状态。
9.一种线程运行装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述线程运行方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述线程运行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210302310.3A CN114675968A (zh) | 2022-03-25 | 2022-03-25 | 一种线程运行方法、系统、装置及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210302310.3A CN114675968A (zh) | 2022-03-25 | 2022-03-25 | 一种线程运行方法、系统、装置及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114675968A true CN114675968A (zh) | 2022-06-28 |
Family
ID=82075941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210302310.3A Pending CN114675968A (zh) | 2022-03-25 | 2022-03-25 | 一种线程运行方法、系统、装置及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114675968A (zh) |
-
2022
- 2022-03-25 CN CN202210302310.3A patent/CN114675968A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6473806B1 (en) | Methods and apparatus for managing objects and processes in a distributed object operating environment | |
US9146735B2 (en) | Associating workflows with code sections in a document control system | |
CN108628688B (zh) | 一种消息处理方法、装置及设备 | |
US9542235B2 (en) | Process-safe read/write locks | |
CN114327777B (zh) | 确定全局页目录的方法、装置、电子设备及存储介质 | |
KR101478619B1 (ko) | 가상화 기술을 이용한 데이터 입출력 방법 및 장치 | |
US11016886B2 (en) | Multi-ring shared, traversable, and dynamic advanced database | |
WO2011048268A1 (en) | Saving snapshot of a knowledge base without blocking | |
CN110609807B (zh) | 用于删除快照数据的方法、设备和计算机可读存储介质 | |
US20200342008A1 (en) | System for lightweight objects | |
US11489844B2 (en) | On-the-fly creation of transient least privileged roles for serverless functions | |
US8918370B2 (en) | Dynamic allocation of program libraries | |
CN112199391A (zh) | 一种数据加锁检测方法、设备及计算机可读存储介质 | |
US10417121B1 (en) | Monitoring memory usage in computing devices | |
CN114675968A (zh) | 一种线程运行方法、系统、装置及可读存储介质 | |
US9009731B2 (en) | Conversion of lightweight object to a heavyweight object | |
US8793663B2 (en) | Smart cache for a server test environment in an application development tool | |
CN110874273B (zh) | 一种数据处理方法及装置 | |
KR101881039B1 (ko) | 비휘발성 메모리에 저장된 메모리 매핑 파일의 비동기식 원자적 업데이트 방법 및 제어 장치 | |
CN113157513B (zh) | 一种堆内存破坏检测方法、装置、电子设备及存储介质 | |
CN111158701B (zh) | 库模块发布方法、装置、设备及存储介质 | |
CN118174980A (zh) | 一种报文处理方法、装置、电子设备、存储介质及车辆 | |
CN116431336A (zh) | 一种页缓存限制方法、系统、电子设备及存储介质 | |
CN118229327A (zh) | 定价规则配置方法、装置、设备及存储介质 | |
CN114706823A (zh) | 一种文件写入方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |