Middle
Wat is het verschil tussen 'concurrentie' en 'paralellisme' in de context van multithreading?
sobes.tech AI
Antwoord van AI
Concurrentie (concurrency) is de mogelijkheid van een systeem om meerdere taken tegelijkertijd te verwerken. Deze taken kunnen op één processorkern worden uitgevoerd, waarbij ze in de tijd worden afgewisseld (tijddeling principe). Betekent niet noodzakelijk dat taken op hetzelfde fysieke moment worden uitgevoerd.
Parallelisme (parallelism) is de daadwerkelijke gelijktijdige uitvoering van meerdere taken op hetzelfde fysieke moment, gebruikmakend van meerdere processorkernen of meerdere processoren.
Belangrijkste verschil:
- Concurrentie: Beheer van meerdere taken die wel of niet gelijktijdig kunnen worden uitgevoerd. Focus op het structureren van het programma om meerdere uitvoeringsstromen te beheren.
- Parallelisme: Fysieke gelijktijdige uitvoering van meerdere taken. Focus op het gebruik van beschikbare hardwarebronnen om de uitvoering te versnellen.
// Voorbeeld van concurrentie (zonder garantie op parallelle uitvoering)
public class ConcurrentExample {
public static void main(String[] args) {
Runnable task1 = () -> System.out.println("Taak 1 gestart op thread: " + Thread.currentThread().getName());
Runnable task2 = () -> System.out.println("Taak 2 gestart op thread: " + Thread.currentThread().getName());
new Thread(task1).start(); // Kan op één kern worden uitgevoerd
new Thread(task2).start(); // Kan op één kern worden uitgevoerd
}
}
// Voorbeeld van parallelisme (vereist een multi-core processor)
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() // Gebruikt ForkJoinPool voor parallelle uitvoering
.forEach(number -> System.out.println("Verwerking van " + number + " op thread: " + Thread.currentThread().getName()));
}
}
| Aspect | Concurrentie | Parallelisme |
|---|---|---|
| Doel | Beheer van meerdere taken | Versnelling van uitvoering |
| Vereisten | Meerdere taken/threads | Multi-core processor/meerdere processoren |
| Uitvoering | Afwisselend uitvoeren | Gelijktijdig uitvoeren |
| Frequentie | Kan worden bereikt op één kern | Vereist meerdere kernen/processoren |
| Voorbeeld | Multitasking op een enkel-core systeem | Parallelle verwerking van grote datasets |