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