我想以序列化方式運行一些任務。對此的典型解決方案是創建一個Java:另一個多線程執行程序中的單線程子執行程序
Executor executor = Executors.newSingleThreadedExecutor();
並運行此任務上的任務。
但是,我已經有了一個多線程的線程池。
有沒有一種簡單的方法來派生一個行爲像單線程的子執行器(如:一次只運行一個任務),但是使用另一個(可能是非單線程)執行器作爲「後端」而不是創建一個全新的操作系統線程?
有幾個用例爲什麼我們會想這樣做:
- 的應用程序可能已經有了例如線程池後臺任務, 設置優先級等,我們希望重用。
- 類似地,我們可能會傳遞一個執行程序,它不只是一個普通的線程池(例如推遲執行購買,測量執行時間等)
- 其中在MoreExecutors.directExecutor)使(爲一個子集測試(以便例如期貨立即解決)。
編輯:加入上面的例子
你可以把你想要在單線程中運行的任務代碼?我認爲在單線程中運行任務將由任務本身決定。如果您不想在另一個線程的任務內執行任何操作,它只會在同一個線程中運行。 –
我同意Vijendra - 你的問題很有趣,但爲了給予更多有用的反饋,一些代碼可能會幫助我們。 – GhostCat