Eclipse, wątki i problem którego nie ma z konsolą

0

Napisałem prosty serwer z wątkami obsługujący dwóch klientów. Wszystko działa dobrze. Ale chciałem zrobić tak żeby serwer wyłączał się np. po wpisaniu w konsoli "X", no i zrobiłem. Zrobiłem wątek a w nim pętla w której oczekuje na wpisanie tekstu i jeśli to "X" to wtedy zamykam gniazda i wywołuję System.exit(). No i jeśli uruchamiam program (system Win XP) w konsoli to to działa, ale jeśli w Eclipsie to wtedy zaczynają się problemy. Klienci nie mogą podłączyć się do serwera (choć czasem uda się że się podłączą), dopiero gdy wpiszę to "X" to wtedy przerwie się ta pętla w wątku wyłączającym serwer i jako że w Eclipsie System.exit() nie wyłącza programu to wtedy dopiero klienci mogą się podłączyć do serwera. O co może chodzić w Eclipsie że pod konsolą działa wszystko dobrze a w Eclipsie nie?

A i jeszcze jedno pytanie. Da się zrobić w Javie coś takiego w programie konsolowym, że jak zamknę okno konsoli Windowsa (tym krzyżykiem w prawym górnym rogu) to wtedy zostanie wykonany pewien kod który bym chciał wtedy wykonać??? Coś jak SetConsoleCtrlHandler() w C???

0

Aktualizacja problemu.

Problem w Eclipsie nie występuje jeśli klasa wątku wyłączającego serwer na "X" jest wewnętrzną klasą w głównej klasie serwera. Znaczy się mam klasy Serwer (w niej nawiązuje się połączenia), ObsługaKlientow i ta Zakoncz, i Zakoncz musi być wewnątrz Serwer bo inaczej się p... nie działa. Dlaczego tak się dzieje?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.