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