
Java: Nekonečná slučka
Narazil som na tento kód:
https://stackoverflow.com/questions/33460365/what-the-fastest-way-to-draw-pixels-buffer-in-java
Po nejakom čase som si uvedomil, že je to vlastne nekonečná slučka.
No teraz o čo mi ide. Tá aplikácia je korektne ukončiteľná. Ak by som niečo také urobil v Pascale, tak by som program neukončil, pretože udalosti by sa nedostali k slovu. Ak aj niečo podobné v Pascale robím, musí to byť v samostatnom vlákne a musím testovať ukončenie vlákna. Predpokladám, že v Jave bežia udalosti v inom vlákne alebo je to inak?
Protoze tam je JFrame.EXIT_ON_CLOSE, tak se zavola pri zavreni okna System.exit(0) coz vypne cely JVM, teda i vsechny vlakna...
Takže, ak chcem urobiť nejakú akciu pred ručným ukončením aplikácie (uložiť súbor a podobne) treba použiť iné než EXIT_ON_CLOSE?
Ne. Pridej si na ten JFrame WindowListener a svuj kod dej do metody windowClosing...
Ďakujem, na to sa pozriem. Ale myslím, že moju otázku si zodpovedal dostatočne, takže uzatváram a ďakujem.
ano, rozumné aplikace mají více procesů, aby byly responzivní při nějakých akcích (i neviditelných), ale celá problematika je širší, používá se asynchronnost , vlákna. Dokonce se dají i vlákna / lehký multitasking simulovat uvnitř jednoho vlákna v různych jazycích / napriklad koncept Fibers. Vlastně o node.js je vlákno, které furt čeká na něco.
Ano, eventy jsou volany v extra vlakne:
https://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html