executorservice

    2熱度

    1回答

    我已經看到幾個評論,說明執行程序比線程更好,但是如果有多個線程通過有界緩衝區進行通信(如基於流程編程),爲什麼無論如何你必須使用線程(使用newCachedThreadPool(?))時,你會使用Executors嗎?此外,我使用isAlive(),interrupt()這樣的方法 - 如何獲得線程句柄? 有沒有人有我可以抄襲的示例代碼? ;-)

    25熱度

    8回答

    我有一個將異步任務委託給線程池的進程。我需要確保某些任務按順序執行。 因此,例如 任務按順序到達 任務A1,B1,C1,D1,E1,A2,A3,B2,F1 任務可以以任何順序,除非有一個被執行自然依賴,所以a1,a2,a3必須按照這個順序處理,或者分配給同一個線程,或者阻塞這些直到我知道前一個#任務完成。 目前它不使用Java Concurrency軟件包,但我正在考慮更改以利用線程管理。 有誰有

    1熱度

    2回答

    我一直在使用來自ExecutorCompletionService的示例代碼,並將以下示例代碼放在一起。 solve()中的代碼按預期工作並打印 1 2 3 4 5 solve2()中的代碼不會打印任何內容,實際上也不會退出。在將作業提交給ExecutionService之前或之後構建ecs是無關緊要的。 是否沒有辦法在FutureTasks中使用CompletionService構造?我已經重寫

    6熱度

    2回答

    我有這個問題: 我有一個計時器。使用scheduleAtFixedRate它會創建一個新的Timer任務。在那個計時器任務中有一些代碼,可能需要一段時間才能完成。我如何確保Timer在上一個沒有完成時不會創建新任務? 由於

    9熱度

    5回答

    我已經使用執行程序提交了一個任務,並且需要它在一段時間後停止(例如5分鐘)。我試圖做這樣的: for (Future<?> fut : e.invokeAll(tasks, 300, TimeUnit.SECONDS)) { try { fut.get(); } catch (CancellationException ex) { fut.can

    7熱度

    3回答

    我一起實現我處理管道的最佳方式摔跤。 我的飼料生產工作提高到一個BlockingQueue的。在消費者方面,我輪詢隊列,將我在Runnable任務中獲得的內容包裝起來,並將其提交給ExecutorService。 while (!isStopping()) { String work = workQueue.poll(1000L, TimeUnit.MILLISECONDS);

    25熱度

    9回答

    我有這個相當簡單的問題關於ThreadPoolExecutor。我有以下情況:我必須從隊列中消耗對象,爲它們創建適當的輔助任務並將它們提交給ThreadPoolExecutor。這很簡單。但在關機場景中,許多工人可能會排隊執行。由於其中一個任務可能會運行一個小時,並且我希望能夠相對快速地正常關閉應用程序,所以我希望在正常完成已處理任務的同時放棄ThreadPoolExecutor中的所有排隊任務。

    3熱度

    2回答

    我正在使用Executor框架使用線程池(例如newFixedThreadPool)啓動多個線程。我使用threadpool.submit(aThread)提交要由線程池執行的作業,並且此工作正常,但是我需要確定所有線程何時完成,以便我可以繼續進行其他處理。我看着使用Future.get()來阻塞,直到線程完成,這裏的問題是阻塞直到結果可用。我還着眼於在發出關閉之後不斷調用isTerminated

    4熱度

    4回答

    我有一個在ExecutorService線程池的後臺執行的長時間運行的任務。根據這項任務返回進度或中間結果,有哪些最佳做法?有沒有提供這種功能的庫? 編輯:爲了澄清,我正在談論報告進展到其他代碼,而不是用戶。 通常情況下,我會使用SwingWorker,但我正在爲Grails應用程序使用Java/Groovy後端,並且我不確定它如何在無頭服務器環境中運行,因爲它具有EDT關係。 另一個例子是Ecl

    12熱度

    4回答

    假設我有一個任務是從java.util.concurrent.BlockingQueue中提取元素並處理它們。 public void scheduleTask(int delay, TimeUnit timeUnit) { scheduledExecutorService.scheduleWithFixedDelay(new Task(queue), 0, delay, timeUn