Middle
V čem spočívá rozdíl mezi 'konkurencí' a 'paralelismem' v kontextu vícenásobného vlákna?
sobes.tech AI
Odpověď od AI
Konkurence (concurrency) je schopnost systému zpracovávat několik úkolů současně. Tyto úkoly mohou být vykonávány na jednom jádru procesoru, přepínáním mezi nimi v čase (princip časového sdílení). Není nutné znamená vykonávání úkolů ve stejném fyzickém čase.
Paralelismus (parallelism) je skutečné současné vykonávání několika úkolů ve stejném fyzickém čase, využívající více jader procesoru nebo více procesorů.
Hlavní rozdíl:
- Konkurence: Řízení několika úkolů, které mohou nebo nemusí být vykonávány současně. Zaměření na strukturování programu pro zpracování více vláken.
- Paralelismus: Fyzické současné vykonávání několika úkolů. Zaměření na využití dostupných hardwarových zdrojů ke zrychlení výkonu.
// Příklad konkurence (bez záruky paralelního vykonávání)
public class ConcurrentExample {
public static void main(String[] args) {
Runnable task1 = () -> System.out.println("Úkol 1 začal na vlákně: " + Thread.currentThread().getName());
Runnable task2 = () -> System.out.println("Úkol 2 začal na vlákně: " + Thread.currentThread().getName());
new Thread(task1).start(); // Mohou být vykonávány na stejném jádře
new Thread(task2).start(); // Mohou být vykonávány na stejném jádře
}
}
// Příklad paralelismu (vyžaduje vícejádrový procesor)
import java.util.List;
import java.util.Arrays;
public class ParallelExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
numbers.parallelStream() // Používá ForkJoinPool pro paralelní vykonávání
.forEach(number -> System.out.println("Zpracování " + number + " na vlákně: " + Thread.currentThread().getName()));
}
}
| Aspekt | Konkurence | Paralelismus |
|---|---|---|
| Cíl | Řízení několika úkolů | Zrychlení vykonávání |
| Požadavky | Několik úkolů/vláken | Vícejádrový procesor/několik procesorů |
| Vykonávání | Střídání vykonávání | Současné vykonávání |
| Frekvence | Může být dosaženo na jednom jádře | Vyžaduje více jader/procesorů |
| Příklad | Multitasking na jednojádrovém systému | Zpracování velkého pole dat paralelně |