Kio estas Forko/Aliĝas kadron en java 7.0 (Paralela programaro)?

Forko/Aliĝas kadron estis enkondukita en java 7 Solvi multi-surfadeniganta/paralelajn programarajn aferojn.

Ĝi estas tre malfacila trakti samtempan (Paralela) Programaro de uzanta tradician vojon. Ĉar vi devi trakti fadenan samtempigon, Sciigo, Aliĝi ktp. kaj ankaŭ la enfaliloj de komunaj rimedoj. Lingvo-nivela subteno por samtempa programaro sur la Java platformo estas tre forta kiel pruvita de la penoj en malsamaj komunumoj. Ĉi tiuj komunumoj ĉiuj provis provizi ampleksajn programarajn modelojn kaj efikajn efektivigojn kiu abstraktas la doloron indikas asociita kun multi-surfadenigita kaj distribuita aplikojn.Java Platformo, Norma Eldono (Java SE) 5 Kaj tiam Java SE 6 Enkondukis aron de pakoj (Executor servo)Provizanta potencan concurrency konstruaĵaj blokoj. Java SE 7 Cetere plibonigita la kadron aldonanta pli da subtenoj por parallelism.

Forko/Aliĝas estas nova koncepto en java 7.0 Versio. La baza celo de ĉi tiu kadro estas faciligi la multithreading medio en java aplikoj. La pli bona tiam la executor serva kadro estas forko/aliĝas kadron. Ĝi prenas la avantaĝojn de ĉiuj pretiga potenco kaj tial la apliko akiras pli da rimedo kaj pretiganta potencon. Ĝi estas efektivigo de la ExecutorService fasado kiu helpas vin utiligas multoblajn procesorojn. Ĝi estas desegnita por laboroj kiu povas esti rompita en pli malgrandaj pecoj recursively kaj tial fari la pretigantan pli rapida.

Simila al ExecutorService, La forko/aliĝas kadron ankaŭ distribuas taskojn al laboristaj fadenoj en fadena naĝejo. Sed la ĉefa diferenco estas ke la forko/aliĝas kadron uzas laboron-ŝteladanta algoritmon. Ĉi tie la laboristaj fadenoj kiu elkuras de aferoj fari povas ŝteladi taskojn de aliaj fadenoj kiu estas ankoraŭ okupata. La ForkJoinPoolclass estas etendaĵo de AbstractExecutorService kaj la koro de la kadro. ForkJoinPool efektivigas la kernan laboron-ŝteladanta algoritmon kaj efektivigas ForkJoinTasks.
Nun lasita min preni ekzemplon kompreni la koncepton en detaloj.

La bazaj paŝoj estas
· Fendi la taskon
· Asigni ĝin al la haveblaj fadenoj
· Post kiam kompletiĝo aliĝas la blokojn kaj fari ĝin kompleta

Lasi nin preni liston kiu enhavos grandan nombron de integraloj produktita ĉe hazarda.

Ĉi tiu klaso estas montranta la tradician vojon fari la taskon.

package javablog.levent.com;
import java.util.Random;
// This class defins a list which will contain large number of integers.
public class LargeInteger {
private final int[] list = new int[2000000];
public largeInteger() {
Random generator = new Random(19580427);
for (int i = 0; i < list.length; i++) {
list[i] = generator.nextInt(500000);
}
}
public int[] getList() {
return list;
}
}

Nun la sekvanta SplitTask klaso estas elfaranta la fendon kaj aliĝi taskon.

package javablog.levent.com;
import java.util.Arrays;
import jsr166y.forkjoin.RecursiveAction;
public class SplitTask extends RecursiveAction {
private int[] list;
public long result;
public SplitTask(int[] array) {
this.list = array;
}

@Superregi
Protektita malplenon komputas() {
Se (Listo.Longeco == 1) {
Rezulta = listo[0];
} Alia {
Int midpoint = listo.Longeco / 2;
Int[] L1 = Aroj.CopyOfRange(Listo, 0, Midpoint);
Int[] L2 = Aroj.CopyOfRange(Listo, Midpoint, Listo.Longeco);
SplitTask s1 = nova SplitTask(L1);
SplitTask s2 = nova SplitTask(L2);
ForkJoin(S1, S2);
Rezulti = s1.Rezulto + S2.Rezulto;
}
}
}

La lasta klaso estas elprovanta la procezon. Ĝi estas alvokanta la ForkJoinExecutor naĝejo elfari la taskon.

package javablog.levent.com;
import jsr166y.forkjoin.ForkJoinExecutor;
import jsr166y.forkjoin.ForkJoinPool;
import javablog.levent.com.SplitTask;
public class TestForkJoin {
public static void main(String[] args) {
LargeInteger test = new LargeInteger();
// Check the number of available processors
int nThreads = Runtime.getRuntime().availableProcessors();
System.out.println(nThreads);
SplitTask mfj = new SplitTask(test.getList());
ForkJoinExecutor pool = new ForkJoinPool(nThreads);
pool.invoke(mfj);
long result = mfj.getResult();
System.out.println("Done. Result: " + result);

}
}

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share