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 |