1.Thread.sleep()
Sampeyan bisa nglebokake jeda menyang eksekusi program Java. Iki biasane ora perlu, amarga pangguna pengin program bisa mlaku kanthi cepet. Ora akeh wong sing bakal seneng yen sampeyan sengaja nyuda kode sampeyan.
Nanging minangka programmer, bisa uga ana pirang-pirang kahanan nalika ngaso ing kode sampeyan bakal migunani. Contone, umpamane sampeyan nulis game lan sampeyan pengin nindakake apa wae saben rong detik utawa kaping pindho saben detik.
Sejatine, ngaso migunani, mula ayo ndeleng carane nambah jeda ing kode sampeyan. Iku bener banget prasaja:
Thread.sleep(duration);
Ngendi duration
dawa ngaso ing milliseconds ( 1/1000
sadetik).
Pernyataan iki bakal ngaso program sampeyan nganti duration
milidetik. Tuladha:
|
Ngaso program kanggo 2 detik. |
|
Ngaso program kanggo setengah detik. |
|
Ngaso program kanggo 1 jam. |
Mangkene carane bisa digunakake ing praktik. Ayo kita nulis program sing bakal ngluncurake pesawat ruang angkasa. Iki carane kode bisa katon kaya:
|
Saben detik, program bakal nampilake nomer: 10 , banjur 9 , banjur 8 , etc. Nalika count tekan 0 , program bakal nampilake " Let's go! " |
2. Ngitung jeda kanthi bener
Dawane ngaso iku gampang kanggo ngetung. Yen sampeyan perlu program kanggo nindakake soko sapisan detik, banjur ngaso punika 1000 ms. Yen 2 kaping per detik, banjur ngaso kanggo 500ms (1000/2).
Yen sampeyan kudu nindakake 15 kaping per detik, ngaso kanggo 66 ms (1000/15). Iku kabeh katon cukup prasaja:
The duration of one iteration of the loop = 1000 / number of times per second
Nanging ana nuansa sing penting banget ing kene. Sanadyan akeh statement dieksekusi kanthi cepet, nanging ora langsung.
Delengen iki. Contone, sampeyan duwe tumindak sing mbutuhake 100ms kanggo ngrampungake. Sampeyan pengin nindakake tumindak iki 5 kaping saben detik. Suwene sampeyan kudu ngaso? Mesthi ora 200ms.
Kanggo tumindak 5 kaping per detik, kita butuh wektu sing dibutuhake kanggo nglakokake tumindak ditambah wektu ngaso padha karo 200 ms. Yen kita nindakake iku, banjur bakal mbukak sabenere 5 kaping per detik. Ing kasus kita, tumindak kasebut mbutuhake 100 ms, tegese isih ana 100 ms kanggo ngaso.
pause duration = duration of one iteration of the loop - time required to execute the action
Pangembang game ngerti manawa wektu sing dibutuhake kanggo nindakake tumindak luwih dhuwur tinimbang nol. Lan uga wong sing main game.
Yen game mlaku ing 20 FPS, tegese mung bisa nggambar 20 pigura ing layar sajrone sedetik. 1000/20
ngasilaken 50 ms. Iki wektu sing dibutuhake kanggo nggambar pigura nalika main game.
3. Nanodetik
Komputer saiki luwih cepet tinimbang nalika Jawa digawe. Tegese jeda 1 milidetik bisa uga ora cukup granular.
Upaminipun kita duwe sawetara tumindak super singkat sing arep kita nindakake 2000 kaping per detik. Kepiye carane ngaso setengah milidetik?
Kanggo iki, ana siji varian liyane saka Thread.sleep()
cara:
Thread.sleep(milliseconds, nanoseconds);
Cara iki nggawe program turu kanggo jumlah milidetik lan nanodetik sing ditemtokake.
Nanodetik yaiku 1 yuta milidetik. Tegese ngaso siji lan setengah milidetik bakal katon kaya iki:
Thread.sleep(1, 500_000);
Lan yen sampeyan pengin ngaso saka 1/10
milidetik, sampeyan kudu nulis iki:
Thread.sleep(0, 100_000);
Sampeyan bisa uga ora nggunakake metode iki ing program sampeyan saiki. Nanging luwih becik ngerti lan ora nggunakake tinimbang butuh lan ora ngerti.
4. TimeUnit
kelas
Miturut cara, Jawa wis kelas liyane sing bakal nggawe urip luwih gampang yen sampeyan arep kanggo alon mudhun aplikasi. Kita ngomong babagan TimeUnit
kelas ing java.util.concurrent
paket kasebut.
Elinga yen wiwit kelas ora ana ing java.lang
paket, sampeyan kudu nambah baris import java.util.concurrent.TimeUnit;
, utawa nulis java.util.concurrent.TimeUnit
saben wektu ing kode.
Kelas iki nindakake perkara sing padha karo Thread.sleep()
, nanging luwih trep:
TimeUnit.HOURS.sleep(15)
Kode iki bakal nggawe program turu nganti 15 jam. Menit, detik, dina uga kasedhiya. Uga mikrodetik (1/1000.000) lan nanodetik (1/1000.000.000).
Kelas kasebut TimeUnit
nduweni sifat ing ngisor iki:
- nanodetik:
NANOSECONDS
- mikrodetik:
MICROSECONDS
- milidetik:
MILLISECONDS
- detik
SECONDS
- menit:
MINUTES
- jam:
HOURS
- dina:
DAYS
Nggarap properti kasebut pancen trep banget, amarga ora perlu mikir babagan ngowahi, ucapake, jam dadi milidetik. Kode kuwi luwih nyenengake kanggo nulis lan maca.
GO TO FULL VERSION