Middle
Aký je rozdiel medzi 'konkurenciou' a 'paralelizmom' v kontexte viacvláknového spracovania?
sobes.tech AI
Odpoveď od AI
Konkurencia (concurrency) je možnosť systému spracovávať niekoľko úloh súčasne. Tieto úlohy môžu byť vykonávané na jednom jadre procesora, prepínaním medzi nimi v čase (princíp delenia času). Nie je nutné znamenať vykonávanie úloh v rovnakom fyzickom čase.
Paralelizmus (parallelism) je skutočné súčasné vykonávanie viacerých úloh v rovnakom fyzickom čase, využívajúc viac jadier procesora alebo viac procesorov.
Hlavný rozdiel:
- Konkurencia: Riadenie niekoľkých úloh, ktoré môžu alebo nemusia byť vykonávané súčasne. Zameranie na štruktúrovanie programu na spracovanie viacerých vlákien.
- Paralelizmus: Fyzické súčasné vykonávanie viacerých úloh. Zameranie na využitie dostupných hardvérových zdrojov na zrýchlenie výkonu.
// Príklad konkurencie (bez záruky paralelného vykonávania)
public class ConcurrentExample {
public static void main(String[] args) {
Runnable task1 = () -> System.out.println("Úloha 1 začala na vlákne: " + Thread.currentThread().getName());
Runnable task2 = () -> System.out.println("Úloha 2 začala na vlákne: " + Thread.currentThread().getName());
new Thread(task1).start(); // Môžu byť vykonávané na jednom jadre
new Thread(task2).start(); // Môžu byť vykonávané na jednom jadre
}
}
// Príklad paralelizmu (vyžaduje viacjadrový 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žíva ForkJoinPool na paralelné vykonávanie
.forEach(number -> System.out.println("Spracovanie " + number + " na vlákne: " + Thread.currentThread().getName()));
}
}
| Aspekt | Konkurencia | Paralelizmus |
|---|---|---|
| Cieľ | Riadenie viacerých úloh | Zrýchlenie vykonávania |
| Požiadavky | Viaceré úlohy/vlákna | Viacjadrový procesor/viac procesorov |
| Vykonávanie | Striedavé vykonávanie | Súčasné vykonávanie |
| Frekvencia | Môže byť dosiahnutá na jednom jadre | Vyžaduje viac jadier/procesorov |
| Príklad | Multitasking na jednojadrovom systéme | Spracovanie veľkého poľa dát paralelne |