"Halo, Amigo!

"Kabeh anyar mung soko lawas sing wis lali. Dina iki aku bakal pirembagan bab mandeg Utas. Mugi sampeyan wis lali carane interrupt () cara bisa."

"Iya, Ellie, aku wis lali."

"Apik. Banjur aku bakal ngelingake sampeyan."

"Ing Jawa, yen ana wong sing pengin mungkasi thread sing mlaku, dheweke bisa menehi tandha menyang thread. Kanggo nindakake iki, sampeyan kudu nyetel variabel isInterrupted sing didhelikake obyek Thread dadi bener."

"Saben Utas wis interrupted () cara, kang digunakake kanggo nyetel flag iki. Nalika interrupt () cara disebut, variabel isInterrupted nang obyek Utas disetel kanggo bener."

"Lan nalika Thread.sleep () utawa gabung () cara disebut ing thread, cara mriksa apa gendera isInterrupted disetel kanggo thread saiki. Yen gendera iki disetel (variabel isInterrupted padha bener), banjur cara . uncalan InterruptedException ."

"Iki, aku bakal ngelingake sampeyan conto lawas:"

Kode Katrangan
class Clock implements Runnable
{
public void run()
{
Thread current = Thread.currentThread();

while (!current.isInterrupted())
{
Thread.sleep(1000);
System.out.println("Tik");
}
}
}
Cara roto Jam entuk obyek Utas kanggo Utas saiki.

Kelas Jam nulis tembung "Obah" menyang console sapisan saben detik anggere variabel isInterrupt thread saiki palsu.

Nalika isInterrupt dadi bener, cara run bakal mandheg.

public static void main(String[] args)
{
Clock clock = new Clock();
Thread clockThread = new Thread(clock);
clockThread.start();

Thread.sleep(10000);
clockThread.interrupt();
}
Utas utama miwiti benang anak (jam) sing kudu mlaku ing salawas-lawase.

Enteni 10 detik lan mbatalake tugas kanthi nelpon metode interupsi.

Utas utama rampung karyane.

Utas jam rampung karyane.

"Ing kene kita nggunakake metode turu minangka bagean saka loop tanpa wates ing metode run . Ing loop, variabel isInterrupt dicenthang kanthi otomatis . siji sing disebut metode turu). Yen bener, cara kasebut ora bakal turu. Nanging, mbuwang InterruptedException ."

"Nanging ing conto iki, kita terus mriksa variabel isInterrupted ing kondisi loop."

"Aku elinga ana sawetara alasan kenapa kita ora bisa nggunakake pendekatan iki. Apa sampeyan bisa ngelingake aku?"

" Kaping pisanan , cara mbukak ora mesthi duwe loop. Cara kasebut bisa uga kalebu sawetara rolas telpon menyang metode liyane. Ing kasus iki, sampeyan kudu nambah mriksa isInterrupted sadurunge saben telpon metode."

" Kapindho , sawetara cara sing nglibatake macem-macem tumindak bisa uga mbutuhake wektu sing suwe kanggo dieksekusi."

" Katelu , mbuwang pangecualian ora ngganti mriksa isInterrupted. Iku mung tambahan trep. Pangecualian di buwang ngijini sampeyan kanggo cepet unwind tumpukan telpon bali menyang cara mbukak dhewe."

" Kapat , cara turu akeh digunakake. Pranyata cara mbiyantu iki ditambahake kanthi mriksa implisit sing ora kalah migunani.  Kaya-kaya ora ana sing nambahake cek kasebut, nanging ana.  Iki super larang nalika sampeyan Aku nggunakake kode wong liya lan sampeyan ora bisa nambah mriksa dhewe."

" Kalima , mriksa tambahan ora ngrusak kinerja. Nelpon cara turu tegese thread ngirim ora nindakake apa-apa (kajaba turu), supaya karya ekstra ora ngganggu sapa."

"Iku persis apa sing sampeyan ngandika sadurunge."

"Lan babagan statement sampeyan, " Ora ana sing bisa njamin yen benang bakal mandheg. Mung benang sing bisa mandheg dhewe. "Apa sampeyan bisa nerangake?"

"Inggih."

"Sadurungé, ing versi awal Jawa, Utas duwe cara mandeg (). Lan nalika sampeyan nelpon, JVM bener-bener mandhegake thread kasebut. Nanging yen thread nindakake soko ing njaba JVM (contone, nulis file utawa nelpon. Fungsi OS) nalika diganggu kanthi cara iki, gangguan kasebut nyebabake akeh masalah, kayata file sing ora ditutup, sumber daya sistem sing durung dirilis, lsp.

"Sawijining rapat umum para pangripta Jawa mutusake kanggo mbusak cara kanggo mungkasi thread kanthi paksa. Saiki sing bisa ditindakake yaiku nyetel gendera tartamtu (Interrupted) lan ngarep-arep kode thread kasebut ditulis kanthi bener, supaya gendera iki bakal diproses. Gendéra iki kaya pratandha sing muni, 'Utas, mandheg, mangga. Penting banget!'. Nanging mandheg utawa ora, iku urusane dhewe."

"Nanging babagan InterruptedException?"

"Apa yen kode sing mlaku ing thread iki duwe akeh blok coba-catch? Sanajan InterruptedException ana ing endi wae, mesthine ora ana jaminan yen sawetara try-catch ora bakal nyekel lan lali babagan iki. Dadi ora ana jaminan thread bakal mandheg."

"Saliyane iku, Utas wis dianggep minangka pemrograman tingkat rendah. Nanging sabanjure aku bakal ngandhani sampeyan."

"Sampeyan dudu Ellie-sampeyan Scheherazade!"

"Dadi, Amigo! Apa kabeh pelajaran saiki wis jelas?"

"Ya wis."

"Oke, apik."