Publicatiedatum : 26/03/2024

Opleiding : Java, multithreaded programmeren

Praktijkcursus - 4d - 28u00 - Ref. JQT

Java, multithreaded programmeren




Multithreaded programmeren in Java wordt steeds belangrijker met de verspreiding van multiprocessorarchitecturen: het vereenvoudigt het ontwerp en de ontwikkeling van toepassingen met intrinsiek parallellisme en biedt effectieve oplossingen voor prestatieproblemen.


INTER
INTRA
OP MAAT

Praktijkcursus ter plaatse of via klasverband op afstand
Disponible en anglais, à la demande

Ref. JQT
  4d - 28u00
Neem contact met ons op




Multithreaded programmeren in Java wordt steeds belangrijker met de verspreiding van multiprocessorarchitecturen: het vereenvoudigt het ontwerp en de ontwikkeling van toepassingen met intrinsiek parallellisme en biedt effectieve oplossingen voor prestatieproblemen.


Pedagogische doelstellingen
Aan het einde van de training is de deelnemer in staat om:
Multithreaded programmeermodellen en de bijbehorende standaardbibliotheken onder de knie krijgen
Leren over de belangrijkste datastructuren die geschikt zijn voor multithreaded programmeren
Ontdek de belangrijkste bugs en krijg een overzicht van oplossingen
Kennis van test- en debuggingtools
De verbanden tussen multithreaded programmeren en prestaties begrijpen

Doelgroep
Ontwikkelaars, softwarearchitecten en projectmanagers.

Voorafgaande vereisten
Basiskennis van Java en het gebruik van een IDE (Eclipse, IntelliJ, etc.).

Opleidingsprogramma

1
Multithreaded programmeermodellen, interfaces en klassen

  • Basisbegrippen: taak, uitvoeringsbron, activiteit, uitvoeringsdienst, toekomst.
  • De verschillende implementaties van de concepten (Runnable, Callable<T>, ExecutorService, Future<T>...).
  • Onopgeloste uitzonderingen, draadgroepen.
  • De volledige toekomst.
Praktisch werk
Een toepassing programmeren die de verschillende modellen combineert.

2
Beperkingen op het juiste gedrag van activiteiten

  • Enkele formele specificatiemethoden.
  • Een semi-formele specificatiemethode.
  • De specificaties implementeren.
Praktisch werk
Gebruik van formele specificatiemethoden.

3
Thread-synchronisatie en -communicatie

  • Status "gesynchroniseerd", "wacht", "verwittig" en monitor programmering.
  • Synchronisatie-interfaces en -klassen: sloten, semaforen, cyclische barrières.
  • Staart.
Praktisch werk
Gebruik van synchronisatie-interfaces en -klassen.

4
Taken parallel uitvoeren

  • UitvoerderService.
  • Het fork/join-model (RecursiveTask<T>, RecursiveAction, ForkJoinPool).
Praktisch werk
Gebruik van runtime services en het fork/join-model.

5
Gegevensstructuren voor programmeren met meerdere threads

  • Gespecialiseerde collecties.
  • Lokale opslag van threadgegevens: ThreadLocal<T>.
  • Atoomklassen.
Praktisch werk
Gebruik van gegevensstructuren.

6
Draden en prestaties

  • De impact van het maken van threads.
  • De impact van synchronisatie.
  • De invloed van geheugencaches.
  • Draden en IO's, DB's en afbeeldingen.
  • Draden en planning.
Praktisch werk
Optimalisatie van het programma.

7
Alternatieve modellen

  • Asynchrone modellen: JReact.
  • Actormodellen (Akka Actor4J...).
  • Synchrone reactieve modellen.

8
Tools voor de ontwikkeling van concurrerende programma's

  • JConsole, jstack.
  • De boekhandel JArmus.
  • De temporele logica van Lamport: TLA+.
  • Veel voorkomende fouten: contention, dormancy, deadlock, voortijdige beëindiging.