Konkurentné programovanie - 8. seminár zo 4.10.2024

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

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.

Otvoriť AI: ChatGPT · Claude · Gemini

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.