Dlaczego wątek nie jest przerwany

0

Cześć,

aktualnie przerabiam książkę "Java 9 Concurrency Cookbook - Second Edition" i nie mogę zrozumieć jednej rzeczy.

Tutaj kod

Jak to powinno działać wg mnie:

  1. Wątek główny startuje. Potem startuje on drugi wątek (consoleClock)
  2. Wątek główny zatrzymuje się na 5 sekund
  3. Przez te 5 sekund ciągle leci drugi wątek, który na konsolę coś tam sobie wypisuje.
  4. Po 5 sekundach wątek główny jest wznawiany i zatrzymuje drugi wątek.
  5. Drugi wątek zatrzymuje się, wypisuje, że został zatrzymany "The FileClock has been interrupted." i już nic na ekran nie wypisuje
  6. Wątek główny się kończy

Tymczasem gdy odpalam ten program to 10 razy jest wypisywana data, nie ma żadnego info o przerwaniu wątku, wątek główny nigdy się nie kończy...

Może mi ktoś wytłumaczyć, dlaczego tak się dzieje?

0

nikt Ci nie powie, bo nie pokazałeś kodu. Tu nie ma magii, coś zrobiłeś źle, jakiś wątek który nie jest demonem nie zakończył pracy.

0

Pokazałem przecież kod, jest link załączony.

0
TimeUnit.SECONDS.sleep(5000);

Robisz sleepa na 5000 sekund, nie 5000 milisekund.

0

faktycznie, no i wszystko dziala jak powinno.

Sun Jul 22 1228 CEST 2018
The FileClock has been interrupted.
Sun Jul 22 1229 CEST 2018
Sun Jul 22 1230 CEST 2018
Sun Jul 22 1231 CEST 2018
Sun Jul 22 1232 CEST 2018
Sun Jul 22 1233 CEST 2018
Sun Jul 22 1234 CEST 2018
Sun Jul 22 1235 CEST 2018
Sun Jul 22 1236 CEST 2018
Sun Jul 22 1237 CEST 2018
Process finished with exit code 0

i pan wyżej ma racje

			TimeUnit.SECONDS.sleep(5000);

1 użytkowników online, w tym zalogowanych: 0, gości: 1