sleep
kamil - 11-12-2005 17:34
sleep
Jak można na określony czas zatrzymać aplikację. W języku c można zrobić to funkcją 'sleep(jakaś liczba)'; Jak to można zrobić w javie.Proszę o pomoc.
Pozdrawiam:-)
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Kowalski Tomek - 11-12-2005 17:34
w javie tez jest metoda sleep
tylko ze sleep usypia watki, musisz stworzyc watek ktory dziedziczy po klasie Thread lub mozna dana klase zaimplementowac interfejsem Runnable, w metodzie sleep(czas) czas podaje sie w milisekundach. Dodatkowo metoda sleep musi byc w konstrukcji try - catch bo moze wystapic przerwanie snu:) "InterruptedException".
Tomek - 11-12-2005 17:34
Kowalski Tomek wrote: > w javie tez jest metoda sleep > > tylko ze sleep usypia watki, musisz stworzyc watek ktory dziedziczy po > klasie Thread lub mozna dana klase zaimplementowac interfejsem > Runnable, w metodzie sleep(czas) czas podaje sie w milisekundach. > Dodatkowo metoda sleep musi byc w konstrukcji try - catch bo moze > wystapic przerwanie snu:) "InterruptedException". > > > np tak:
static void waitSomeTime( long a_miliSec ) { // musimy uwazac gdyz 'sleep' moze sie wybudzic w dowolnym momencie // i zglosic wyjatek - stad mala komplikacja tej metody
Date date1 = new Date();
for(;;) { Date date2 = new Date();
long diff = (date2.getTime() - date1.getTime());
if( diff < a_miliSec ) { try { Thread.sleep( a_miliSec - diff ); } catch( InterruptedException e) // sleep moze sie wybudzic przed czasem i rzuca wtedy wyjatkiem { } } else { break; } } }
Zbyszek Malec - 11-12-2005 17:34
Kowalski Tomek wrote (tak! stara dobra wrotka!):
> tylko ze sleep usypia watki,
No to chyba dość standardowe zachowanie, nieprawdaż?
> musisz stworzyc watek ktory dziedziczy po > klasie Thread
Lepiej tego nie robić.
> lub mozna dana klase zaimplementowac interfejsem Runnable,
Dużo lepiej.
Tyle że nie trzeba interfejsu Runnable do wywołania sleepa. Można wywołać tą metodę z kontekstu statycznego (bo jest statyczna) dla bieżącego wątku. Tak jak to zrobił Tomek odpowiadający na twojego posta.
Pozdrawiam. -- Zbigniew Malec Ustronie:104 gg:2756100
a1 - 13-12-2005 09:36
Tomek wrote:
> // musimy uwazac gdyz 'sleep' moze sie wybudzic w dowolnym momencie > // i zglosic wyjatek - stad mala komplikacja tej metody
> try > { > Thread.sleep( a_miliSec - diff ); > } > catch( InterruptedException e) // sleep moze sie > wybudzic przed czasem i rzuca wtedy wyjatkiem
Moze sie sam wybudzic... i sam sie tez zepsuc moze... wogole to te komputery niedobre sa tak sie same z siebie psuja...
Czasem warto przeczytac dokumentacjie tam dosyc dokladnie jest wytlumaczone kiedy i skad sie bierze InterruptedException.
--
a1 (Bartek Janusz) mailto: arcone1 [at] invalid.gmail [dot] com
Tomek - 13-12-2005 09:36
a1 wrote: > Tomek wrote: > >> // musimy uwazac gdyz 'sleep' moze sie wybudzic w dowolnym >> momencie >> // i zglosic wyjatek - stad mala komplikacja tej metody > > >> try >> { >> Thread.sleep( a_miliSec - diff ); >> } >> catch( InterruptedException e) // sleep moze sie >> wybudzic przed czasem i rzuca wtedy wyjatkiem > > > > Moze sie sam wybudzic... i sam sie tez zepsuc moze... wogole to te > komputery niedobre sa tak sie same z siebie psuja... > > Czasem warto przeczytac dokumentacjie tam dosyc dokladnie jest > wytlumaczone kiedy i skad sie bierze InterruptedException. >
"Thrown when a thread is waiting, sleeping, or otherwise paused for a long time and another thread interrupts it using the interrupt method in class Thread."
I co z tego wynika? Ze mam nie obslugiwac InterruptedException?
Tomek - 13-12-2005 09:36
Tomek wrote: > a1 wrote: > >> Tomek wrote: >> >>> // musimy uwazac gdyz 'sleep' moze sie wybudzic w dowolnym >>> momencie >>> // i zglosic wyjatek - stad mala komplikacja tej metody >> >> >> >>> try >>> { >>> Thread.sleep( a_miliSec - diff ); >>> } >>> catch( InterruptedException e) // sleep moze sie >>> wybudzic przed czasem i rzuca wtedy wyjatkiem >> >> >> >> >> Moze sie sam wybudzic... i sam sie tez zepsuc moze... wogole to te >> komputery niedobre sa tak sie same z siebie psuja... >> >> Czasem warto przeczytac dokumentacjie tam dosyc dokladnie jest >> wytlumaczone kiedy i skad sie bierze InterruptedException. >> > > > "Thrown when a thread is waiting, sleeping, or otherwise paused for a > long time and another thread interrupts it using the interrupt method in > class Thread." > > I co z tego wynika? Ze mam nie obslugiwac InterruptedException? >
Od razu uprzedze ewentualna odpowiedz - nie wnikalem w to kiedy interrupt bedzie wywolane, bo pisze jednowatkowy programik, wiec taka konstrukcja jest moim zdaniem poprawna i w razie jakiegos systemowego(nie wiem jakiego bo nie znam Javy na tyle) wybudzenia prawidlowo odmierzy czas.
Tomek - 13-12-2005 09:36
Tomek wrote: > Tomek wrote: > >> a1 wrote: >> >>> Tomek wrote: >>> >>>> // musimy uwazac gdyz 'sleep' moze sie wybudzic w dowolnym >>>> momencie >>>> // i zglosic wyjatek - stad mala komplikacja tej metody >>> >>> >>> >>> >>>> try >>>> { >>>> Thread.sleep( a_miliSec - diff ); >>>> } >>>> catch( InterruptedException e) // sleep moze sie >>>> wybudzic przed czasem i rzuca wtedy wyjatkiem >>> >>> >>> >>> >>> >>> Moze sie sam wybudzic... i sam sie tez zepsuc moze... wogole to te >>> komputery niedobre sa tak sie same z siebie psuja... >>> >>> Czasem warto przeczytac dokumentacjie tam dosyc dokladnie jest >>> wytlumaczone kiedy i skad sie bierze InterruptedException. >>> >> >> >> "Thrown when a thread is waiting, sleeping, or otherwise paused for a >> long time and another thread interrupts it using the interrupt method >> in class Thread." >> >> I co z tego wynika? Ze mam nie obslugiwac InterruptedException? >> > > Od razu uprzedze ewentualna odpowiedz - nie wnikalem w to kiedy > interrupt bedzie wywolane, bo pisze jednowatkowy programik, > wiec taka konstrukcja jest moim zdaniem poprawna i w razie jakiegos > systemowego(nie wiem jakiego bo nie znam Javy na tyle) wybudzenia > prawidlowo odmierzy czas.
Ale jesli zrobilem bledne zalozenie to czekam oczywiscie na korekte :D
a1 - 13-12-2005 09:36
Tomek wrote: > Tomek wrote: > >> a1 wrote: >> >>> Tomek wrote: >>> >>>> // musimy uwazac gdyz 'sleep' moze sie wybudzic w dowolnym >>>> momencie >>>> // i zglosic wyjatek - stad mala komplikacja tej metody >>> >>> >>> >>> >>>> try >>>> { >>>> Thread.sleep( a_miliSec - diff ); >>>> } >>>> catch( InterruptedException e) // sleep moze sie >>>> wybudzic przed czasem i rzuca wtedy wyjatkiem >>> >>> >>> >>> >>> >>> Moze sie sam wybudzic... i sam sie tez zepsuc moze... wogole to te >>> komputery niedobre sa tak sie same z siebie psuja... >>> >>> Czasem warto przeczytac dokumentacjie tam dosyc dokladnie jest >>> wytlumaczone kiedy i skad sie bierze InterruptedException. >>> >> >> >> "Thrown when a thread is waiting, sleeping, or otherwise paused for a >> long time and another thread interrupts it using the interrupt method >> in class Thread." >> >> I co z tego wynika? Ze mam nie obslugiwac InterruptedException? >> > > Od razu uprzedze ewentualna odpowiedz - nie wnikalem w to kiedy > interrupt bedzie wywolane, bo pisze jednowatkowy programik, > wiec taka konstrukcja jest moim zdaniem poprawna i w razie jakiegos > systemowego(nie wiem jakiego bo nie znam Javy na tyle) wybudzenia > prawidlowo odmierzy czas.
Interrupt bedzie wolane wtedy jak je zawolasz, a taka konstrukcja efektywnie uniemozliwia stosowania mechanizmu interruptow (zreszta dosyc przydatnego).
--
a1 (Bartek Janusz) mailto: arcone1 [at] invalid.gmail [dot] com
Tomek - 13-12-2005 09:36
a1 wrote: > Tomek wrote: > >> Tomek wrote: >> >>> a1 wrote: >>> >>>> Tomek wrote: >>>> >>>>> // musimy uwazac gdyz 'sleep' moze sie wybudzic w dowolnym >>>>> momencie >>>>> // i zglosic wyjatek - stad mala komplikacja tej metody >>>> >>>> >>>> >>>> >>>> >>>>> try >>>>> { >>>>> Thread.sleep( a_miliSec - diff ); >>>>> } >>>>> catch( InterruptedException e) // sleep moze sie >>>>> wybudzic przed czasem i rzuca wtedy wyjatkiem >>>> >>>> >>>> >>>> >>>> >>>> >>>> Moze sie sam wybudzic... i sam sie tez zepsuc moze... wogole to te >>>> komputery niedobre sa tak sie same z siebie psuja... >>>> >>>> Czasem warto przeczytac dokumentacjie tam dosyc dokladnie jest >>>> wytlumaczone kiedy i skad sie bierze InterruptedException. >>>> >>> >>> >>> "Thrown when a thread is waiting, sleeping, or otherwise paused for a >>> long time and another thread interrupts it using the interrupt method >>> in class Thread." >>> >>> I co z tego wynika? Ze mam nie obslugiwac InterruptedException? >>> >> >> Od razu uprzedze ewentualna odpowiedz - nie wnikalem w to kiedy >> interrupt bedzie wywolane, bo pisze jednowatkowy programik, >> wiec taka konstrukcja jest moim zdaniem poprawna i w razie jakiegos >> systemowego(nie wiem jakiego bo nie znam Javy na tyle) wybudzenia >> prawidlowo odmierzy czas. > > > Interrupt bedzie wolane wtedy jak je zawolasz, a taka konstrukcja > efektywnie uniemozliwia stosowania mechanizmu interruptow (zreszta dosyc > przydatnego). >
Ok, tyle ze ja nie potrzebuje tego mechanizmu, mam jeden watek ktory ma sie zamrazac na jakis czas po prostu. Wiec sobie zalozylem taki wariant w razie gdyby z jakis niezidentyfikowanych powodow cos wybudzilo moj watek.
a1 - 13-12-2005 09:36
Tomek wrote:
> Ok, tyle ze ja nie potrzebuje tego mechanizmu, mam jeden watek ktory ma > sie zamrazac na jakis czas po prostu. Wiec sobie zalozylem taki wariant > w razie gdyby z jakis niezidentyfikowanych powodow cos wybudzilo moj watek.
Krasnoludki czy gnomy a moze gremliny, slyszalem ze sa takie, laza chamy i interruptuja cudze watki...
Pozatym, jeszcze taka uwaga:
Date date1 = new Date(); Date date2 = new Date(); long diff = (date2.getTime() - date1.getTime());
to tez jest majstersztyk... System.currentTimeMillis() nie wystarczy ??
--
a1 (Bartek Janusz) mailto: arcone1 [at] invalid.gmail [dot] com
Tomek - 13-12-2005 09:36
a1 wrote: > Tomek wrote: > >> Ok, tyle ze ja nie potrzebuje tego mechanizmu, mam jeden watek ktory ma >> sie zamrazac na jakis czas po prostu. Wiec sobie zalozylem taki wariant >> w razie gdyby z jakis niezidentyfikowanych powodow cos wybudzilo moj >> watek. > > > Krasnoludki czy gnomy a moze gremliny, slyszalem ze sa takie, laza chamy > i interruptuja cudze watki... >
Na codzien uzywam C++ i tam watki nie maja dla mnie specjalnych tajemnic. W Javie potrzebowalem sleepa, wiec go znalazlem, ale znalazlem tez info o tym ze rzuca wajatek. Nie znajac szczegolow JVM przechwycilem ten wyjatek i tyle. Jezeli cos by wybudzilo mi watek to od dalej zasypia bo takie ma zadanie w danym momencie. Nigdzie nie znalazlem informacji ze mam uwazac na wybudzene watku wiec nie uwazam.
> Pozatym, jeszcze taka uwaga: > > Date date1 = new Date(); > Date date2 = new Date(); > long diff = (date2.getTime() - date1.getTime()); > > to tez jest majstersztyk... System.currentTimeMillis() nie wystarczy ?? >
Pewnie wystarczy ale dla mnie "ojczyzna" jest C++ a nie Java wiec wybacz ta gafe :)
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
który lepszy ?
Art. malarskie w internecie?
bazy miejscowosci, panstw, wojewodztw
input w oracle'u???
Platne zlecenie - flash + php
Adobe Acrobat Proffessional
procedure
PostgreSQL 7.4 dla Win
Photoshop
[MSSQL] DTS - warunek lub parametr
zanotowane.pldoc.pisz.plpdf.pisz.pltejsza.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|