Sobes.tech
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