具有相同屬性任務序列有序執行的執行緒池設計

2021-09-02 04:51:58 字數 769 閱讀 8669

我有乙個這樣的執行緒池的場景,相信很多人都遇到過: 

1,每個使用者都可以新增多個任務; 

2,有很多的使用者和很多的任務; 

3,每個使用者新增的任務必須有序序列執行,即在同一時刻不能有同時執行乙個使用者的兩個任務; 

4,實時性:只要執行緒池執行緒有空閒的,那麼使用者提交任務後必須立即執行;盡可能提高執行緒的利用率。 

**比較簡潔,基本滿足上述要求:

public class serialthreadexecutor 

public void executeserially(object key, runnable r)

} job.addjob(r);

} private class sequentialjob implements runnable

public void run() else else }}

} catch (interruptedexception e)

}} public void addjob(runnable r)

}} }

}

這個實現有幾個缺陷:

1,每次新增乙個任務都要進入一次鎖,有一點小小開銷;

2,serialjobs會一直在記憶體中,當某個key的任務很久沒有新增了,對應的

sequentialjob物件一直存在,雖然不占用很多記憶體,但對於有潔癖的人來說或,還是不爽。

拋磚引玉,看看廣大網友是否可以優化。

(異常處理等細節大家就不要理會了)

Object 去重 合併具有相同屬性的陣列

去重合併相同屬性的陣列 思路 1.定義目標陣列 var result 2.定義物件放置目標物件屬性 例如 var obj var orders 合併成想要的結果 var orderresult 方法一 var resultlist 目標物件 var menuitem orders.foreach e...

兩個具有相同屬性的類互相轉換

在工作中遇到兩個類具有相同的屬性,但是是不同的兩個類,屬性很多,互相轉換起來很麻煩,於是就想到了下面的辦法,實現他們的互相轉換,請指教 public static listconvertt1tot2 listresoucelist where t1 new where t2 new t1 resou...

selenium xpath定位相同屬性的元素

1 先定位到父節點,再從父節點找指定節點 例如 注意不能直接用 driver.find element by xpath id branch inquiry find element by class name city picker span 用法 coding utf 8 from seleni...