tag:blogger.com,1999:blog-8092343615208752185.post7110801690365816998..comments2023-12-18T11:22:13.345+01:00Comments on Whatever, we all gonna die anyway: Java Killers #006Pawełhttp://www.blogger.com/profile/07160103602401451907noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-8092343615208752185.post-74382608484194940322008-06-03T17:31:00.000+02:002008-06-03T17:31:00.000+02:00@tomaszByłbym ostrożny w formułowaniu tak kategory...@tomasz<BR/><BR/>Byłbym ostrożny w formułowaniu tak kategorycznych stwierdzeń. Proponuję przyjrzeć się kodowi źródłowemu:<BR/><BR/>com.sun.tools.javac.Main<BR/><BR/>Rozumiem, że to nie jest "porządny" projekt. ;) <BR/><BR/>Narzędzia CLI napisane w Javie czasem wymagają przekazania "exit code" do środowiska z którego zostały wywołane. Nie chcę Cię martwić, ale każdy porządny projekt uruchamiany z CLI jak np servlet container będzie miał taką sekwencję.<BR/><BR/>Nie zmienia to faktu że należy System.exit używać z głową. Rozumiem Twoją intencję odnośnie niebezpieczeństw System.exit - ale czy w "porządnych" projektach nie używa się przypadkiem SecurityManages? Wtedy próba wywołania System.exit w kodzie zarządzanym przez kontener wywala po prostu SecurityException.<BR/><BR/>Co do Runtine.getRuntime() - rejestracja własnych shutdown hooks np. jest bardzo pożądana w przypadku pisania własnych kontenerów/narzędzi CLI. Obserwowanie własnego kodu pięknie zamykającego wszystkie otwarte zasoby po wywołaniu: killall java z konsoli sprawia nie lada satysfakcję - mogę zaręczyć. :)Kazik Pogodahttps://www.blogger.com/profile/09604205794524759948noreply@blogger.comtag:blogger.com,1999:blog-8092343615208752185.post-4214531403810878452008-06-03T16:45:00.000+02:002008-06-03T16:45:00.000+02:00Cykl faktycznie ciekawy.Drobna uwaga:jak bym zobac...Cykl faktycznie ciekawy.<BR/>Drobna uwaga:<BR/>jak bym zobaczył w kodzie porządnego projektu konstrukcję w stylu System.exit(0) albo wspomniane sztuczki z Runtime.getRuntime() to bym chyba autora wysłał na Madagaskar do wyrębu baobabów.<BR/><BR/>Stosowanie tego typu konstrukcji znakomicie utrudnia moim zdaniem śledzenie przebiegu programu i znalezienie miejsca wystąpienia błędów.Tomek Łasicahttps://www.blogger.com/profile/18186947728694293695noreply@blogger.comtag:blogger.com,1999:blog-8092343615208752185.post-18469960180472234982008-06-01T16:18:00.000+02:002008-06-01T16:18:00.000+02:00Cześć PawełFajny cykl wpisów (Java Killers).Z taki...Cześć Paweł<BR/>Fajny cykl wpisów (Java Killers).<BR/>Z takich zagadek ostatnio przyglądałem się mechanizmowi Double-checked locking ( http://en.wikipedia.org/wiki/Double-checked_locking ). Zastanawiałem się nad użyciem tego mechanizmu. Ten artykuł na Wikipedii (i linki do stron z niego wychodzące) są ciekawą lekturą dla wszystkich zajmujących się współbieżnymi aspektami w Java.<BR/><BR/>Pozdrawiam, Adam WoźniakAdam Wozniakhttps://www.blogger.com/profile/13169773193006103382noreply@blogger.comtag:blogger.com,1999:blog-8092343615208752185.post-36617455713976532042008-05-20T14:00:00.000+02:002008-05-20T14:00:00.000+02:00Wystarczy zarejestrować metodę wywoływaną przy zam...Wystarczy zarejestrować metodę wywoływaną przy zamykaniu wirtualnej maszyny<BR/>Runtime.getRuntime().addShutdownHook()Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8092343615208752185.post-80430260613349693792008-05-20T00:37:00.000+02:002008-05-20T00:37:00.000+02:00To i ja mam zagadkę - napisałeś "Wywołanie System....To i ja mam zagadkę - napisałeś "Wywołanie System.exit(0); powoduje natychmiastowe zabicie procesu", co nie jest do końca prawdą - JVM może z powodzeniem wykonywać kod (a przynajmniej jego część :) ) naszej aplikacji po wywołaniu System.exit - ale jak to uzyskać?Kazik Pogodahttps://www.blogger.com/profile/09604205794524759948noreply@blogger.comtag:blogger.com,1999:blog-8092343615208752185.post-86323228516244552532008-05-19T14:25:00.000+02:002008-05-19T14:25:00.000+02:00@morisil: dobrze :), mozna jeszcze zrobic pele whi...@morisil: dobrze :), mozna jeszcze zrobic pele while(true) w bloku try, wtedy finally tez sie nigdy nie wykona :)Pawełhttps://www.blogger.com/profile/07160103602401451907noreply@blogger.comtag:blogger.com,1999:blog-8092343615208752185.post-50216654860618825272008-05-19T13:45:00.000+02:002008-05-19T13:45:00.000+02:00Jest jeszcze jedna możliwość - zblokować wątek wyk...Jest jeszcze jedna możliwość - zblokować wątek wykonujący aktualnie kod wewnątrz try-finally, po czym w innym wątku zamknąć maszynę wirtualną. :)Kazik Pogodahttps://www.blogger.com/profile/09604205794524759948noreply@blogger.comtag:blogger.com,1999:blog-8092343615208752185.post-41235175319276252492008-05-19T13:37:00.000+02:002008-05-19T13:37:00.000+02:00Runtime.getRuntime().halt(0);Runtime.getRuntime().halt(0);Kazik Pogodahttps://www.blogger.com/profile/09604205794524759948noreply@blogger.com