1. 程式人生 > >java執行緒在專案中的應用場景

java執行緒在專案中的應用場景

1、單執行緒和多執行緒區別:

單執行緒處理的優點:同步應用程式的開發比較容易,但由於需要在上一個任務完成後才能開始新的任務,所以其效率通常比多執行緒應用程式低,如果完成同步任務所用的時間比預計時間長,應用程式可能會不響應。

多執行緒處理可以同時執行多個過程,簡單說下多執行緒開發的益處:

1.多執行緒開發可以將耗時操作放入子執行緒,將UI重新整理加入主執行緒,防止頁面卡頓。

2.在併發操作時使用多執行緒,如C/S架構的伺服器端併發執行緒響應使用者的請求。

3.在多核CPU系統中,使用執行緒可以提高程式響應速度,提高CPU和記憶體的利用率。

4.改善程式結構。將一個複雜的的程序分為多個執行緒,減少類之間的耦合。

5.將程式分塊管理,方便程式的開發和維護。

6.可以隨時停止任務。 可以分別設定各個任務的優先順序以優化效能。

2、開啟多執行緒

一個請求就是一個執行緒,這個執行緒不需要我們來控制,WEB容器自己實現,這是第一個應用。
我們也可以在web中new執行緒來做我們的事。比如,當我有一個很耗時的操作,像統計排名之類的功能。當用戶在web上點選排名時,由於這個計算量太大,可能要計算3~5分鐘或更久。這時我們會在servlert中new一個執行緒來做這個事情,這樣使用者就可以點選排名後去做其他的事,等排名出來現通知他。如果不new執行緒當用戶點排名時,瀏覽器就會一直卡在這裡,一個圈圈轉啊轉的,就是不出來。所以我們可以new執行緒來做耗是任務。還有很多比如,定時任務、WEB版的爬蟲程式、監聽等

3、場景一:一個業務邏輯有很多次的迴圈,每次迴圈之間沒有影響,比如驗證1萬條url路徑是否存在,正常情況要迴圈1萬次,逐個去驗證每一條URL,這樣效率會很低,假設驗證一條需要1分鐘,總共就需要1萬分鍾,有點恐怖。這時可以用多執行緒,將1萬條URL分成50等份,開50個執行緒,沒個執行緒只需驗證200條,這樣所有的執行緒執行完是遠小於1萬分鐘的。
場景二:需要知道一個任務的執行進度,比如我們常看到的進度條,實現方式可以是在任務中加入一個整型屬性變數(這樣不同方法可以共享),任務執行一定程度就給變數值加1,另外開一個執行緒按時間間隔不斷去訪問這個變數,並反饋給使用者。

場景三:電商專案中controller層需要接收前臺傳來的需要下架商品id,因為是全選操作所以也就是

資料庫中商品表的所有id。然後呼叫service層業務邏輯進行刪除。本人資料庫中商品表大概有3000條資料,在不考慮多執行緒方式下,速度已經明顯受到影響,實際專案中又何止成千上萬條資料!如果單執行緒逐一進行刪除其效能可想而知。所以考慮建立多個執行緒,多執行緒併發形式執行商品下線業務邏輯。

總之使用多執行緒就是為了充分利用cpu的資源,提高程式執行效率,當你發現一個業務邏輯執行效率特別低,耗時特別長,就可以考慮使用多執行緒。不過CPU執行哪個執行緒的時間和順序是不確定的,即使設定了執行緒的優先順序,因此使用多執行緒的風險也是比較大的,會出現很多預料不到的問題,一定要多熟悉概念,多構造不同的場景去測試才能夠掌握!