Konkurentné programovanie - 8. seminár zo 4.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
Ôsme cvičenie z Konkurentného programovania sa venuje korektnému rušeniu (cancelovaniu) bežiacich úloh vo vláknach. Vysvetľuje princíp interrupt stavu vlákna, zásadu vlastníka vlákna, teda že vlákno smie prerušovať len ten, kto ho vytvoril, napríklad executor service, a dôsledky nesprávneho zásahu do cudzích vlákien na príklade triedy, ktorá si sama vynucuje timeout nad úlohou. Ďalej rozoberá tri korektné spôsoby reakcie úlohy na prerušenie - vyhodenie InterruptedException, jej opätovné vyhodenie a nastavenie interrupt stavu späť na true - a upozorňuje na chybu prehltnutia tejto výnimky. Na záver ukazuje prácu s Future.get(timeout) a Future.cancel() ako správny spôsob, ako zvonku ukončiť úlohu v executor service.
- Interrupt stav vlákna a jeho zisťovanie (isInterrupted)
- Zásada vlastníka vlákna pri práci s executor service
- Nesprávne rušenie cudzích vlákien - príklad negatívneho návrhu
- Tri korektné reakcie na InterruptedException
- Prehltnutie (swallowing) InterruptedException ako chyba
- Future.get() s timeoutom a TimeoutException
- Future.cancel(true/false)
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky