[
{
"type": "type001",
"msg": {
"status": true,
"location": "shanghai"
}
},
{
"type": "type001",
"msg": {
"status": true,
"location": "beijing"
}
},
{
"type": "type002",
"msg": {
"status": false,
"location": "guangzhou"
}
},
{
"type": "type003",
"msg": {
"status": true,
"location": "hongkong"
}
}
]
比如一個介面,會收到list資料過來,然后進行相應處理,要用多個執行緒處理,具體如下:
相同type的資料都放到一個執行緒單獨處理,
比如第一次有type001和type002兩種type的資料,那么創建兩個執行緒分別處理這個兩個type的資料,
第二次有type001、type002和type03,那么type001、type002第一次創建的對應執行緒處理,type03之前沒有就也單獨創建個執行緒處理,
后面只要又新的type就新建一個執行緒處理這個type的資料,
總之每個type型別的資料都有一個執行緒單獨處理,每個執行緒都只處理這個type的所有資料,type數量有上限不會一直增多
這種情況怎么創建執行緒,或者怎么設計實作比較合適,最好上代碼
多謝大俠指點
uj5u.com熱心網友回復:
哪位大俠有思路uj5u.com熱心網友回復:
創建一個字典,key是type,value是對應的資料陣列(可以考慮用佇列,先進先出),然后不同的執行緒監聽這些陣列處理。
uj5u.com熱心網友回復:
這些資料就是從佇列拿過來的,但一次可能拿多個不同型別,所以想一個型別的資料單獨執行緒專門處理,想知道怎么去創建這些現在比較好
uj5u.com熱心網友回復:
一樣啊,從一個統一的大佇列拿資料,再根據不同的type,分發到不同的小佇列去啊。
uj5u.com熱心網友回復:
你這個設計有個弊端,當同時有多次請求,都用到了同一個執行緒,就會造成阻塞不如改變一下需求,不需要一定要同樣的type使用同樣的執行緒,只要執行緒是空閑的就可以,這時使用執行緒池是最好的。
當然,如果你會用到執行緒本地存盤,或者使用執行緒程序中會污染到執行緒的狀態,一個執行緒只能服務于一種型別,那就另說了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/108883.html
標籤:Java EE
