Sobes.tech
Middle

Kuo skiriasi 'konkurencija' ir 'paralelizmas' daugiasraityje?

sobes.tech AI

Atsakymas iš AI

Konkurencija (concurrency) – tai sistemos galimybė apdoroti kelias užduotis vienu metu. Šios užduotys gali būti vykdomos viename procesoriaus branduolyje, keičiantis jomis laiku (laiko dalijimosi principas). Nebūtina, kad užduotys būtų vykdomos vienu fiziniu momentu.

Paralelizmas (parallelism) – tai tikras kelių užduočių vienu metu vykdymas vienu fiziniu momentu, naudojant kelis procesoriaus branduolius arba kelis procesorius.

Pagrindinis skirtumas:

  • Konkurencija: Valdo kelias užduotis, kurios gali arba negali būti vykdomos vienu metu. Dėmesys programos struktūrizavimui kelių srautų apdorojimui.
  • Paralelizmas: Fizinė vienu metu kelių užduočių vykdymas. Dėmesys prieinamų aparatūros išteklių naudojimui, siekiant pagreitinti vykdymą.
// Konkurencijos pavyzdys (be garantijos, kad vykdoma paraleliai)
public class ConcurrentExample {
    public static void main(String[] args) {
        Runnable task1 = () -> System.out.println("Užduotis 1 pradėta sraute: " + Thread.currentThread().getName());
        Runnable task2 = () -> System.out.println("Užduotis 2 pradėta sraute: " + Thread.currentThread().getName());

        new Thread(task1).start(); // Gali būti vykdoma tame pačiame branduolyje
        new Thread(task2).start(); // Gali būti vykdoma tame pačiame branduolyje
    }
}
// Paralelizmo pavyzdys (reikalauja daugiašakio procesoriaus)
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() // Naudoja ForkJoinPool paraleliniam vykdymui
               .forEach(number -> System.out.println("Apdorojimas " + number + " sraute: " + Thread.currentThread().getName()));
    }
}
Aspektas Konkurencija Paralelizmas
Tikslas Valdyti kelias užduotis Pagreitinti vykdymą
Reikalavimai Kelios užduotys/srautai Daugiašakio procesoriaus/keli procesoriai
Vykdymas Pakaitinis vykdymas Vienu metu vykdymas
Dažnumas Gali būti pasiektas viename branduolyje Reikalauja kelių branduolių/procesorių
Pavyzdys Daugelio užduočių vykdymas vieno branduolio sistemoje Didelio duomenų masyvo paralelinis apdorojimas