新四季網

java多線程經驗總結(JAVA拾遺系列之JAVA基礎-多線程)

2023-05-14 23:01:32

java多線程經驗總結?要了解多線程,需要了解相關的基礎知識,接下來我們就來聊聊關於java多線程經驗總結?以下內容大家不妨參考一二希望能幫到您!

java多線程經驗總結

一、概述

要了解多線程,需要了解相關的基礎知識。

在計算機作業系統中,進程管理也稱為處理機管理,其核心是如何合理地分配處理機的時間,提高系統的效率。在計算機系統中有多個並發執行的程序,採用程序這個靜態概念已經不能描述程序執行時動態變化的過程,所以引入了進程。

進程是程序的一次執行。進程通常由程序、數據和進程控制塊組成。進程的三態模型指的是運行、就緒、阻塞,進程的五態模型指的是新建、就緒、運行、阻塞、終止。

由於進程的創建、撤銷和切換中,系統必須為之付出較大的時空開銷,因此在系統中設置的進程數目不宜過多,進程切換的頻率不宜太高,這就限制了並發程序的提高。引入線程後,將傳統進程的兩個基本屬性分開,線程作為調度和分配的基本單位,進程作為獨立分配資源的單位。線程基本上不擁有資源,只擁有一點運行時必不可少的資源(如程序計數器、一組寄存器和棧)。

二、JAVA線程池

合理使用線程池有利於提高線程的復用性,從而提高系統的運行效率。Java提供ThreadPoolExecutor來創建不同場景下的線程池,主要分為四類:

1、newCachedThreadPool創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閒線程,若無可回收,則新建線程。2、newFixedThreadPool 創建一個定長線程池,可控制線程最大並發數,超出的線程會在隊列中等待。3、newScheduledThreadPool 創建一個定長線程池,支持定時及周期性任務執行。4、newSingleThreadExecutor 創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先級)執行。

無論創建哪種線程池,都有同樣的參數,主要是:

1、corePoolSize,核心線程數,也就是同時運行的線程數

2、maximumPoolSize,最大容納的線程數量,超過數量之後,有幾種策略,詳見handler參數

3、keepAliveTime,線程的生命時長

4、unit,與keepAliveTime對應代表時間的單位

5、workQueue,隊列

6、handler,提交線程數量大於maximumPoolSize時的處理器,有四種處理方式:1、AbortPolicy,拋出異常給調用者;2、CallerRunsPolicy,在調用者所在線程執行;3、DiscardOldestPolicy,拋棄等待隊列中等待最長的那個任務,並把這個任務加入到隊列;4、DiscardPolicy,拋棄任務。

7、threadFactory,線程創建工廠

ThreadPoolExecutor有幾個核心的方法:

1、execute:執行任務

2、getCorePoolSize:獲取普通運行時線程數量上限

3、getPoolSize:獲取當前線程池數量

4、getQueue:獲取等待隊列

5、getActiveCount:獲取正在執行的線程數量(估計值)

三、JAVA線程鎖

當對數據修改時,如果兩個線程同時去修改同一條數據,這樣產生的結果就不是我們預期的結果。這時候就需要對修改操作進行加鎖,讓jvm裡同一時刻只能有一個線程能夠執行修改方法。在Java中,java.util.concurrent.locks包下的ReentrantLock可以很方便的實現加鎖和釋放鎖。示例代碼如下:

class X { private final ReentrantLock lock = new ReentrantLock; // ... public void m { lock.lock; // block until condition holds try { // ... method body } finally { lock.unlock } } }

四、分布式鎖基本思路

當在微服務中,同一個服務可能部署多個示例,這樣同樣的代碼加鎖就變得沒有任何意義。所以引入了分布式鎖,分布式鎖核心原理是藉助第三方中間件,如Reids,存儲一個標識:

1、當執行加鎖代碼時,檢查是否存在標識;

2、如果存在,表示其它線程正在執行;

3、如果不存在表示沒有線程正在執行,可以進行加鎖。

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了