• Keine Ergebnisse gefunden

java.util.concurrent.RecursiveAction(ohneR¨uckgabewert) Fork-Join-Pattern Java:Fork-Join

N/A
N/A
Protected

Academic year: 2022

Aktie "java.util.concurrent.RecursiveAction(ohneR¨uckgabewert) Fork-Join-Pattern Java:Fork-Join"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Java http://kohnlehome.de/java/forkjoin.pdf

Java: Fork-Join

Fork-Join-Pattern

L¨OSE-PROBLEM (P)

Wenn P klein genug L¨ose P sequenziell Sonst

Teile P in kleinerer Teilprobleme P1 und P2 Fork: L¨OSE-PROBLEM (P1)

Fork: L¨OSE-PROBLEM (P2) Join

java.util.concurrent.RecursiveAction (ohne R¨ uckgabewert)

RecursiveAction.java

class MyRecursiveAction extends RecursiveAction<INPUTDATA> { private INPUTDATA data;

public MyRecursiveAction(INPUTDATA data) { this.data = data;

}

protected void compute() { if (data klein genug) {

// sequenzielle Berechnung } else {

// data aufteilen in data1 und data2 // Beide Tasks parallel ausf¨uhren

MyRecursiveAction task1 = new MyRecursiveAction(data1);

MyRecursiveAction task2 = new MyRecursiveAction(data2);

invokeAll(task1, task2);

} } }

Aufruf

MyRecursiveAction rootTask = new MyRecursiveAction(data);

rootTask.invoke();

Franz Kohnle Seite 1 von 2 2. April 2020

(2)

Java http://kohnlehome.de/java/forkjoin.pdf

java.util.concurrent.RecursiveTask (mit R¨ uckgabewert)

MyRecursiveTask.java

class MyRecursiveTask extends RecursiveTask<INPUTDATA> { private INPUTDATA data;

public MyRecursiveTask(INPUTDATA data) { this.data = data;

}

protected RETURNDATA compute() { if (data klein genug) {

// sequenzielle Berechnung } else {

// data aufteilen in data1 und data2 // Beide Tasks parallel ausf¨uhren

MyRecursiveTask task1 = new MyRecursiveTask(data1);

MyRecursiveTask task2 = new MyRecursiveTask(data2);

invokeAll(task1, task2);

// Ergebnisse der beiden Tasks wieder zusammenf¨uhren

RETURNDATA result = zusammenbauen(task1.join(), task2.join());

return result;

} } }

Aufruf

MyRecursiveTask rootTask = new MyRecursiveTask(data);

rootTask.invoke();

RETURNDATA result = rootTask.join();

Franz Kohnle Seite 2 von 2 2. April 2020

Referenzen

ÄHNLICHE DOKUMENTE

Halle (Saale), Berlin, Berlin-Neukölln, Chemnitz, Hannover, Köln, Leipzig, Reutlingen, Stuttgart, Ulm, Erfurt, Jena, Marburg, Nordhausen, Brand-Erbisdorf, Bernburg,

Halle (Saale), Berlin, Berlin-Neukölln, Chemnitz, Hannover, Köln, Leipzig, Reutlingen, Stuttgart, Ulm, Erfurt, Jena, Marburg, Nordhausen, Brand-Erbisdorf, Bernburg,

Halle (Saale), Berlin, Berlin-Neukölln, Chemnitz, Hannover, Köln, Leipzig, Reutlingen, Stuttgart, Ulm, Erfurt, Jena, Marburg, Nordhausen, Brand-Erbisdorf, Bernburg,

Halle (Saale), Berlin, Berlin-Neukölln, Chemnitz, Hannover, Köln, Leipzig, Reutlingen, Stuttgart, Ulm, Erfurt, Jena, Marburg, Nordhausen, Brand-Erbisdorf, Bernburg,

Halle (Saale), Berlin, Berlin-Neukölln, Chemnitz, Hannover, Köln, Leipzig, Reutlingen, Stuttgart, Ulm, Erfurt, Jena, Marburg, Nordhausen, Brand-Erbisdorf, Bernburg,

Halle (Saale), Berlin, Berlin-Neukölln, Chemnitz, Hannover, Köln, Leipzig, Reutlingen, Stuttgart, Ulm, Erfurt, Jena, Marburg, Nordhausen, Brand-Erbisdorf, Bernburg,

Halle (Saale), Berlin, Berlin-Neukölln, Chemnitz, Hannover, Köln, Leipzig, Reutlingen, Stuttgart, Ulm, Erfurt, Jena, Marburg, Nordhausen, Brand-Erbisdorf, Bernburg,

Halle (Saale), Berlin, Berlin-Neukölln, Chemnitz, Hannover, Köln, Leipzig, Reutlingen, Stuttgart, Ulm, Erfurt, Jena, Marburg, Nordhausen, Brand-Erbisdorf, Bernburg,