Professional Documents
Culture Documents
- MultiThread ialah program yang mengandungi dua atau lebih banyak tugas yang boleh
dijalankan secara serentak. Dalam multithreaded benang adalah unit terkecil dispatchable
kod. Ini bermaksud sesuatu program boleh melakukan satu atau lebih tugas serentak.
Multithread lebih pantas dari single thread. Multithreading adalah satu daripada ciri
paling penting Java. Ia membuatkan ia bahasa paling laju untuk dijalanakan pada web.
- Di dalam Single thread semasa satu keterangan kelas dimasukkan, kelas dipanggil
setiap kali instance baru bagi kelas tersebut akan diwujudkan.
- Di bawah adalah sebuah program yang menjelaskan pemisalan dan permintaan bagi
thread menggunakan antaramuka sebaliknya bagi menyambungkan kelas thread. Untuk
memulakan thread anda perlu menggunakan method start() pada objek anda.
Thread runner;
public RunnableThread() {
}
public RunnableThread(String threadName) {
runner = new Thread(this, threadName);
System.out.println(runner.getName());
runner.start();.
}
public void run() {
System.out.println(Thread.currentThread());
}
}
public class RunnableExample {
}
System.out.println(Thread.currentThread());
}
}
Soalan dua
Perbezaan thread :
1. New state – Selepas membina Thread ia akan berada dalam method tetapi
sebelum fungsi start(). Pada ketika ini, Thread masih belum berfungsi.
2. Runnable (Ready-to-run) state - Satu thread bermula daripada Runnable. Satu
thread pertama memasuki runnable selepas method start() kaedah hanya satu
thread boleh dilarikan untuk ini selepas sama ada berlari, menunggu, diam atau
kembali dari fungsi yang terhalang juga. Pada situasi ini satu thread sedang
menunggu untuk satu proses.
3. Running state – Satu thread berada dalam situasi mengurus begitu cara benang
pada masa ini penguatkuasaan. Terdapat beberapa cara untuk memasuki fungsi
Runnable tetapi terdapat hanya sehala untuk memasuki fungsi Running: penjadual
memilih satu thread daripada runnable.
4. Dead state – Satu thread boleh jadi dikira tidak berfungsi atau tamat apabila
fungsi run() selesai. Jika mana-mana thread menyusul fungsi runnable,ia tidak
boleh di run semula.
5. Blocked - satu thread tidak boleh dilarikan disebabkan ia menunggu thread
sebelumnya tamat.
Static void sleep(long millisecond) throws InterruptedException
• Waiting for Notification – Satu thread menunggu untuk arahan daripada satu lagi
thread yang lain. Thread itu menghantar kembali untuk runnable setelah
menghantar arahan daripada satu lagi thread
.
final void wait(long timeout) throws InterruptedException
final void wait(long timeout, int nanos) throws InterruptedException
final void wait() throws InterruptedException
Satu set proses atau Thread adalah satu jalan buntu apabila setiap satu Thread sedang
menunggu untuk satu peristiwa yang hanya satu lagi proses di dalam set itu boleh
menyebabkan. Contoh: Satu kebuntuan adalah bagi membina satu graf terarah yang
bucu-bucu adalah Thread atau proses dan yang mata mewakili "adalah menunggu untuk"
hubungan. Jika graf ini mengandungi satu kitaran, sistem itu adalah jalan buntu. Kecuali
sistem itu adalah direkabentuk untuk pulih daripada deadlocks, satu kebuntuan
menyebabkan program atau sistem menyangkut.
Deadlocks boleh terjadi di dalam Java kerana menyelarasakan kata kunci menyebabkan
penguatkuasaan Thread bagi menghalang sementara menunggu untuk kunci, atau
memantau, dikaitkan dengan menentukan objek. Thread mungkin sudah pun memegang
kunci dikaitkan dengan objek-objek lain, dua Thread boleh menjadi satu untuk menunggu
dan melepaskan satu kunci, dalam seperti satu kes, aturcara akan berakhir penantian
selama-lamanya. Contoh berikut itu menunjukkan satu set kaedah-kaedah yang
mempunyai potensi untuk kebuntuan. Kaedah kedua pula ialah mengunci kedua-dua
benda iaitu cacheLock dan tableLock, sebelum aturcara diteruskan. Dalam contoh ini,
membantah pemangku sebagai mengunci adalah global (statik)
Contoh Aturcara