在Java開發(fā)中,wait和interrupt是兩個非常重要的概念。它們通常用于多線程編程中,可以幫助程序控制線程的執(zhí)行和結(jié)束。下面我們將分別介紹這兩個概念及其用法。
wait方法是Object類中的一個方法,用于暫停當(dāng)前線程的執(zhí)行,并將其置于等待狀態(tài),直到有其他線程通過notify或notifyAll方法喚醒它。wait方法的使用方式如下:
synchronized (lock) { while (condition) { lock.wait(); } }其中,lock是用于同步的對象,condition是一個條件,當(dāng)條件不成立時,當(dāng)前線程就會被掛起,等待lock對象的notify或notifyAll方法。
interrupt是Thread類中的一個方法,用于終止線程的運(yùn)行。如果一個線程正在等待某個資源,而這個資源又無法被釋放,那么就可能導(dǎo)致該線程無法正常終止。這時候,我們可以使用interrupt方法來終止線程的執(zhí)行。線程在被中斷時會拋出InterruptedException異常,可以通過捕獲該異常來執(zhí)行必要的清理操作。interrupt方法的使用方式如下:
Thread thread = new Thread(() ->{ while (!Thread.currentThread().isInterrupted()) { // 執(zhí)行線程任務(wù) } }); thread.start(); // 在需要終止線程時,調(diào)用以下方法 thread.interrupt();這里創(chuàng)建一個線程后,使用了一個while循環(huán)來檢查線程是否被中斷。如果線程已經(jīng)被中斷,就會退出循環(huán)從而結(jié)束線程的執(zhí)行。