Diskuze: Multithread for
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
tak že pokud mám třeba pole čísel o velikosti 10 a každý z nich mám zvýšit o určitou hodnotu, tak 0-3 projede jedno vlákno 4-6 druhé vlákno 7-9 třetí vlákno tj proběhne to cca 3x rychleji. Atomicitu, nebo to aby si navzájem nešahali kam nemají neřešit, mám to zařízený tak, že to vadit nebude
Pokud vím, v Javě zatím žádná obdoba Parallel.ForEach z .NETu není. Můžeš ale použít ExecutorService.
Příklad:
int numberOfThreads = Runtime.getRuntime().availableProcessors();
ExecutorService exec = Executors.newFixedThreadPool(numberOfThreads);
List<Integer> tasks = new ArrayList<Integer>();
for (int i = 0; i < 100; i++) {
tasks.add(i);
}
try {
for (final Integer task : tasks) {
exec.submit(new Runnable() {
@Override
public void run() {
System.out.println("Thread " + Thread.currentThread().getId() + " Task " + task);
}
});
}
} finally {
exec.shutdown();
}
Zobrazeno 5 zpráv z 5.