91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中sleep()和wait()有什么區別

發布時間:2021-08-31 18:06:43 來源:億速云 閱讀:244 作者:chen 欄目:編程語言

這篇文章主要講解了“python中sleep()和wait()有什么區別”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python中sleep()和wait()有什么區別”吧!

sleep 是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時后會自動恢復。調用 sleep 不會釋放對象鎖。 wait 是 Object 類的方法,對此對象調用 wait 方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出 notify 方法(或 notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。

sleep 就是正在執行的線程主動讓出 cpu,cpu 去執行其他線程,在 sleep 指定的時間過后,cpu 才會回到這個線程上繼續往下執行,如果當前線程進入了同步鎖,sleep 方法并不會釋放鎖,即使當前線程使用 sleep 方法讓出了 cpu,但其他被同步鎖擋住了的線程也無法得到執行。wait 是指在一個已經進入了同步鎖的線程內,讓自己暫時讓出同步鎖,以便其他正在等待此鎖的線程可以得到同步鎖并運行,只有其他線程調用了 notify 方法(notify 并不釋放鎖,只是告訴調用過 wait 方法的線程可以去參與獲得鎖的競爭了,但不是馬上得到鎖,因為鎖還在別人手里,別人還沒釋放。如果 notify 方法后面的代碼還有很多,需要這些代碼執行完后才會釋放鎖,可以在 notfiy 方法后增加一個等待和一些代碼,看看效果),調用 wait方法的線程就會解除 wait 狀態和程序可以再次得到鎖后繼續向下運行。對于 wait 的講解一定要配合例子代碼來說明,才顯得自己真明白。

package com.huawei.interview;
 
publicclass MultiThread {
 /**
 * @paramargs
 */
 public static voidmain(String[] args) {
 // TODO Auto-generated method stub
    new Thread(newThread1()).start();
        try { 
       Thread.sleep(10);
         } catch (InterruptedException e) {
 // TODO Auto-generated catchblock
         e.printStackTrace();
         } 
    new Thread(newThread2()).start(); 
 } 
 
 private static classThread1implements Runnable
 { 

 @Override
 public void run() {
 // TODO Auto-generated methodstub
//由于這里的 Thread1和下面的 Thread2內部 run 方法要用同一對象作為監視器,我們這里不能用 this,因Thread2里面的 this 和這個 Thread1的 this 不是同一個對象。我們用MultiThread.class 這個字節碼對象,當前虛擬機里引用這個變量時,指向的都是同一個對象。
 synchronized (MultiThread.class){

 System.out.println("enterthread1...");
 
 System.out.println("thread1is waiting");
 try { 
 //釋放鎖有兩種方式,第一種方式是程序自然離開監視器的范圍,也就是離開了 synchronized 關鍵字管轄的代碼范圍,另一種方式就是在 synchronized 關鍵字管轄的代碼內部調用監視器對象的 wait 方法。這里,使用 wait 方法釋放鎖。
 MultiThread.class.wait();
 } catch(InterruptedException e) {
 // TODO Auto-generatedcatch block
 e.printStackTrace();
 } 
 
 System.out.println("thread1is going on...");
 System.out.println("thread1is being over!"); 
 } 
 } 
 
 } 
 
 private static classThread2implements Runnable
 { 
 
 @Override
 public void run() {
 // TODO Auto-generated methodstub
 synchronized (MultiThread.class){
 
 System.out.println("enterthread2...");
 
 System.out.println("thread2notify other thread can release wait status..");
//由于 notify 方法并不釋放鎖,即使 thread2調用下面的 sleep 方法休息了10毫秒,但 thread1仍然不會執行,因為 thread2沒有釋放鎖,所以 Thread1無法得不到鎖。
 MultiThread.class.notify();
 
 System.out.println("thread2is sleeping ten millisecond...");
 try { 
 Thread.sleep(10);
 } catch (InterruptedExceptione) {
 // TODO Auto-generatedcatch block
 e.printStackTrace();
 } 
 
 System.out.println("thread2is going on...");
 System.out.println("thread2is being over!");
 
 } 
 } 
 
 } 
 
}

感謝各位的閱讀,以上就是“python中sleep()和wait()有什么區別”的內容了,經過本文的學習后,相信大家對python中sleep()和wait()有什么區別這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定陶县| 肥东县| 迭部县| 安陆市| 得荣县| 沁水县| 宁海县| 吉水县| 湖州市| 深水埗区| 西昌市| 民权县| 乐清市| 东兴市| 怀宁县| 炉霍县| 吴桥县| 合江县| 八宿县| 阳高县| 沅陵县| 内黄县| 沙坪坝区| 德令哈市| 逊克县| 沁水县| 大化| 临沧市| 水城县| 永福县| 开远市| 夏邑县| 固阳县| 久治县| 平邑县| 郯城县| 武威市| 吐鲁番市| 盐边县| 十堰市| 景东|