[發明專利]一種數據處理方法及系統在審
| 申請號: | 202110850139.5 | 申請日: | 2021-07-27 |
| 公開(公告)號: | CN113485839A | 公開(公告)日: | 2021-10-08 |
| 發明(設計)人: | 柏躍;彭雨嵐;李夢溪 | 申請(專利權)人: | 中國銀行股份有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50 |
| 代理公司: | 北京集佳知識產權代理有限公司 11227 | 代理人: | 錢娜 |
| 地址: | 100818 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 數據處理 方法 系統 | ||
本發明公開了一種數據處理方法及系統,創建帶有父線程屬性的子線程,基于子線程的父線程屬性,遍歷子線程的上級線程,并判斷上級線程是否存在線程局部變量值,若存在,基于該上級線程的線程對象獲取線程局部變量值localValue并進行訪問變量操作。通過上述方案,當多線程環境下,子線程要獲取上級線程局部變量值時,無需對線程父子關系數據結構和線程變量的Map對象進行并發訪問控制來獲取上級線程局部變量值,即,無需額外維護線程父子關系的數據結構和線程變量的Map對象,只需根據線程的父子關系來遍歷子線程的上級線程,得到線程局部變量值,從而實現提高多線程環境下,子線程獲取上級線程局部變量值的效率的目的。
技術領域
本發明涉及線程處理技術領域,更具體地說,涉及一種數據處理方法及系統。
背景技術
在Java計算編程語言中,通過把數據放在線程局部變量(ThreadLocal)中讓每個線程創建一個該變量的副本,ThreadLocal可高效地為每個使用它的線程提供單獨的線程局部變量值的副本。
現有技術中,如果需要訪問上級線程的某變量值,需要維護一個線程上下級關系的數據結構,比如樹,樹節點為子線程;以及維護一個線程變量Map,用來存放每個線程的變量集合,Map的key為線程對象,Map的value為變量集合。在需要訪問上級線程的變量值時,需要在存放線程上下級關系的樹中找到該子線程節點,然后從下往上遍歷該樹來獲取其上級線程;對于每個上級線程,再看線程變量Map中該線程是否存在需要的變量。由于Map對象中存儲多個線程的變量值,當多線程對Map對象進行并發訪問時,如,當A線程和B線程對Map對象進行并發訪問獲取ThreadLocal的值時,將要訪問的Map對象進行鎖住,B線程進行等待,A線程從鎖住的Map對象獲取變量值,當A線程獲取變量值的操作完成后再將Map對象進行釋放,B線程再對Map對象進行訪問,且存放線程上下級關系的數據結構也需要進行同樣的并發控制,使得多線程對Map對象進行并發訪問時獲取變量值的效率低。
發明內容
有鑒于此,本發明公開了一種數據處理方法及系統,實現提高多線程環境下子線程獲取上級線程局部變量值的效率的目的。
為了實現上述目的,本發明公開的技術方案如下:
本發明第一方面公開了一種數據處理方法,所述方法包括:
創建帶有父線程parentThread的屬性的子線程childThread;
基于所述子線程childThread的父線程parentThread的屬性,遍歷所述子線程childThread的上級線程,并判斷所述上級線程是否存在線程局部變量值localValue;
若所述上級線程存在所述線程局部變量值localValue,基于預先獲取到的所述上級線程的線程對象findThread獲取所述線程局部變量值localValue;
基于所述線程局部變量值localValue進行訪問變量操作。
優選的,所述創建帶有父線程parentThread的屬性的子線程childThread,包括:
創建當前線程Thread類的ParentAwareThread子類;
基于所述ParentAwareThread類,創建子線程childThread;
將預先獲取到的當前線程對象findThread賦值給所述子線程childThread的父線程parentThread的屬性。
優選的,所述基于所述子線程childThread的父線程parentThread的屬性,遍歷所述子線程childThread的上級線程,并判斷所述上級線程是否存在線程局部變量值localValue,包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國銀行股份有限公司,未經中國銀行股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110850139.5/2.html,轉載請聲明來源鉆瓜專利網。





