sleep 和 wait 的區別

2021-06-28 21:21:44 字數 1247 閱讀 3625

sleep

就是正在執行的執行緒主動讓出

cpu,

cpu去執行其他執行緒,在

sleep

指定的時間過後,

cpu才會回到這個執行緒上繼續往下執行,如果當前執行緒進入了同步鎖,

sleep

方法並不會釋放鎖,即使當前執行緒使用

sleep

方法讓出了

cpu,但其他被同步鎖擋住了的執行緒也無法得到執行。

wait

是指在乙個已經進入了同步鎖的執行緒內,讓自己暫時讓出同步鎖,以便其他正在等待此鎖的執行緒可以得到同步鎖並執行,只有其他執行緒呼叫了

notify

方法(notify

並不釋放鎖,只是告訴呼叫過

wait

方法的執行緒可以去參與獲得鎖的競爭了,但不是馬上得到鎖,因為鎖還在別人手裡,別人還沒釋放。如果

notify

方法後面的**還有很多,需要這些**執行完後才會釋放鎖,可以在

notfiy

方法後增加乙個等待和一些**,看看效果),呼叫

wait

方法的執行緒就會解除

wait

狀態和程式可以再次得到鎖後繼續向下執行。對於

wait

的講解一定要配合例子**來說明,才顯得自己真明白。

package

com.huawei.interview;

public

class multithread catch (interruptedexception e)

new thread(new thread2()).start();      }

private static class thread1 implements runnable

catch (interruptedexception e)

system.out.println("thread1 is going on...");

system.out.println("thread1 is being over!");           }}

}private static class thread2 implements runnable

catch (interruptedexception e)

system.out.println("thread2 is going on...");

system.out.println("thread2 is being over!"); }

} }   }

sleep和wait的區別

關鍵字 sleep wait 1 這兩個方法來自不同的類分別是thread和object 2 最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。3 wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在...

sleep 和 wait的區別

1 這兩個方法來自不同的類分別是,sleep來自thread類,和wait來自object類。sleep是thread的靜態類方法,誰呼叫的誰去睡覺,即使在a執行緒裡呼叫了b的sleep方法,實際上還是a去睡覺,要讓b執行緒睡覺要在b的 中呼叫sleep。2 最主要是sleep方法沒有釋放鎖,而wa...

sleep和wait的區別

1 這兩個方法來自不同的類分別是,sleep來自thread類,和wait來自object類。sleep是thread的靜態類方法,誰呼叫的誰去睡覺,即使在a執行緒裡呼叫了b的sleep方法,實際上還是a去睡覺,要讓b執行緒睡覺要在b的 中呼叫sleep。2 最主要是sleep方法沒有釋放鎖,而wa...