java 线程休眠_百战程序员:java线程的休眠和回复
sleep()介紹
sleep() 定義在Thread.java中。
sleep() 的作用是讓當(dāng)前線程休眠,即當(dāng)前線程會從“運(yùn)行狀態(tài)”進(jìn)入到“休眠(阻塞)狀態(tài)”。sleep()會指定休眠時(shí)間,線程休眠的時(shí)間會大于/等于該休眠時(shí)間;在線程重新被喚醒時(shí),它會由“阻塞狀態(tài)”變成“就緒狀態(tài)”,從而等待cpu的調(diào)度執(zhí)行。
sleep()方法
表示放棄當(dāng)前cpu的資源,使當(dāng)前線程不占用計(jì)算機(jī)的任何資源。如果當(dāng)前線程獲取到了鎖,sleep()方法是不會放棄鎖的,如果線程被打斷會拋出InterruptException異常。
package com.xxx.util;
import java.util.Date;
/**
* Created with IntelliJ IDEA.
* Date: 15-3-27
* Time: 上午8:51
* To change this template use File | Settings | File Templates.
*/
public class ThreadSleep implements Runnable {
@Override
public void run() {
for(int i=0;i<15;i++){
System.out.printf("startTime:%sn",new Date());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
//線程中斷在此處理
System.out.println("The thread has bean interrupted");
}
}
}
}
wait()方法:線程必須在同步代碼塊(synchronized)中調(diào)用wait()方法,如果在同步代碼塊之外調(diào)用wait()方法,jvm將會拋出IllegalMonitorStateException。當(dāng)一個(gè)線程調(diào)用wait()方法時(shí),jvm會把這個(gè)線程陷入休眠,并釋放掉鎖,同時(shí)允許其他線程得到鎖。
Java并發(fā)API中,還有另外一個(gè)方法可以讓線程讓出CPU。這就是yield()方法,調(diào)用該方法就是想Java虛擬機(jī)發(fā)送消息說明線程可以讓出CPU給其他線程。Java虛擬機(jī)并不保證響應(yīng)這個(gè)請求。一般情況下,該方法僅僅在調(diào)試程序時(shí)使用。
總結(jié)
以上是生活随笔為你收集整理的java 线程休眠_百战程序员:java线程的休眠和回复的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 分析执行计划的效率_MySQ
- 下一篇: mysql 重构同步老数据_MySQL