Konkurentné programovanie - 7. seminár z 3.10.2024
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Siedmy seminár z Konkurentného programovania sa venuje ForkJoinPool, špeciálnemu exekútoru určenému pre rekurzívne úlohy, ktorý interne využíva návrhový vzor work stealing. Vysvetľujú sa nové typy úloh RecursiveTask a RecursiveAction, ktoré nahrádzajú Callable a Runnable a ktorých metóda compute() nesmie vyhadzovať kontrolované výnimky. Kľúčovým konceptom je metóda fork(), ktorou sa spúšťa podúloha, a join(), ktorou úloha čaká na výsledok podúlohy bez blokovania vlákna, ktoré sa medzitým uvoľní pre inú prácu. Na praktickom príklade rekurzívneho počítania veľkosti adresárov sa demonštruje prechod z nekonečného fondu vlákien na ForkJoinPool s obmedzeným počtom vlákien.
- ForkJoinPool ako exekútor pre rekurzívne úlohy
- Návrhový vzor work stealing
- RecursiveTask a RecursiveAction namiesto Callable/Runnable
- Metóda compute() namiesto call()/run()
- Metódy fork() a join()
- Rozdiel medzi join() a get() z hľadiska uvoľnenia vlákna
- Konečný počet vlákien vs nekonečný thread pool
- Príklad rekurzívneho prehľadávania adresárov
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky