我想使用Java fork連接來解決遞歸問題,但我不想爲每個遞歸步驟顯式創建新的任務實例。原因是太多的任務等於太多的物體,經過幾分鐘的處理後會填滿我的記憶。在Java 7中重複使用fork/join中的任務對象
我在Java 6中有以下解決方案,但是Java 7有更好的實現嗎?
final static AtomicInteger max = new AtomicInteger(10); // max parallel tasks
final static ThreadPoolExecutor executor = new ThreadPoolExecutor(....);
private void submitNewTask() {
if (max.decrementAndGet()>=0) {
executor.execute(new Task(....));
return;
}
run(); // avoid creating a new object
}
public void run() {
..... process ....
// do the recursion by calling submitNewTask()
max.incrementAndGet();
}
我想是這樣再次呼籲同一個任務的invoke()
功能(更新過程中的相關領域,後),但它似乎並沒有工作。
你在做什麼與Fork/Join有關?遞歸分解的整個想法是將大數組分成更小的部分,這樣每部分都可以在不同的處理器上運行。這些作品被稱爲任務。這裏我們需要更多的信息。 – edharned