executor

    2熱度

    5回答

    我有一個任務管道(管道中的每個任務有不同的並行性要求),每個任務工作在不同的ExecutorService。任務處理數據包,因此如果我們有10個數據包,那麼將提交10個任務到service1,每個數據包有一個任務。一旦提交給service1的任務實際上已被調用,它可能會提交一個新任務,以便在數據分組上進一步工作到service2,service3或不。 下面的代碼工作正常,即: shutdown(

    2熱度

    2回答

    我有一個任務可以從線程池設計模式中受益(許多小任務要並行執行)。我最初從零開始實現了一個天真的線程池,其中n個Runnables全部從同一個ConcurrentLinkedQueue中拉出工作單元,直到隊列爲空,然後終止。然後我決定「嘿,讓我們試用Java中的Executor,因爲它可能比我的天真設計的系統更好地測試和更可靠。」問題:在我的實現中,每個線程一直保持到隊列爲空,使用一段時間(!que

    2熱度

    1回答

    Future.get(timeout,unit)容易受到Javadoc中針對Object.wait()和Condition.await()記錄的相同類型的虛假喚醒的影響嗎? someType result; Future<someType> future = executor.submit(new callableTask()); result = future.get(1000, Time

    0熱度

    1回答

    我有一個Swing應用程序,它使用ThreadPoolExecutor執行多個任務。有一次,我想重新初始化一切。我正在使用executor.purge();和executor.getQueue().clear();這夠了嗎?有沒有更好的方法/做法來執行此操作?提前致謝。

    1熱度

    1回答

    中斷執行程序線程的正確方法是什麼? 我有這樣的: 線程類名工人與方法: public void run() { while(!(Thread.currentThread().isInterrupted()){ System.out.println("work " + Thread.currentThread().getName() + ":" + Thread.current

    3熱度

    2回答

    考慮一個可以分解成數百個小型,獨立運行的任務的大任務。更具體地說,每個小任務是發送一個輕量級網絡請求並決定從服務器收到的答案。預計這些小任務不會超過一秒,並且總共涉及幾臺服務器。 我想到了兩種使用Executor框架來實現這個功能的方法,我想知道哪一個更好,爲什麼。 創建幾個,比如說5到10個任務,每個任務涉及到一堆發送和接收。 爲每個發送創建一個任務(Callable或Runnable)&接收並

    3熱度

    5回答

    我有以下Foo類使用FooProcessor類。所以我想要做的是,在運行cp1實例處理方法的同時,我想運行cp2.process()。 public class Foo { public static void main(String [] args){ FooProcessor cp1 = new FooProcessor(); FooProcessor c

    3熱度

    2回答

    到目前爲止,在我對executorservice的實驗中,我有很多建議,涉及使用future.get,然後future.cancel,以便拋出線程中斷,然後需要在線程中捕獲並在那裏處理。我的問題有點不同。 假設我是跑,僅僅保持軌道的事情多久正在運行,如果他們通過了一些門檻,這會不會殺ExecutorService的所有正在運行的線程的好辦法一個線程? 例的思維過程: ExecutorService

    0熱度

    1回答

    我有一個計劃的執行器服務,並且我需要在計劃任務後返回期貨。 Javadoc表示,在計劃任務後會返回ScheduledFuture - 但是,如何獲得尚未運行的任務的後續期貨? 我的電話如下所示: exec.scheduleAtFixedRate(new Task(),0,interval,TimeUnit.MINUTES); 新的任務確實被提交和運行,但是我只有第一次打電話的未來。這是未來的東西,

    0熱度

    2回答

    我正在嘗試使用Future和Callable將dfs遞歸方法變爲並行以提高效率。但不知道如何做對。下面是代碼: public MyResult compute(MyTree tree, int depth, ExecutorService exec) { if (depth >= 3) { Callable<MyResult> callable = new Callable<