還是使用join()學習的例子。實驗**如下
package thread;
public
class
jointest
implements
runnable
}public
static
void
main(string args) throws exception
}
實驗結果是0,具體原因見本人部落格多執行緒之join().
我們新增sleep()方法。
實驗**如下:
package thread;
public
class
jointest
implements
runnable
}public
static
void
main(string args) throws exception
}
實驗結果是5.在這裡本人就產生了疑惑,t呼叫sleep難道不是t會進入睡眠,main執行緒會繼續運算,這樣輸出應該是0,怎麼會是5.
其實上面t.sleep()其實是錯誤的,其實應該是thread.sleep().這裡面睡眠的是,當前執行的執行緒,這裡是main執行緒,因為t執行緒正在啟動中。
實驗**如下:
package thread;
public
class
jointest
implements
runnable
}public
static
void
main(string args) throws exception
}
實驗結果:
5
多執行緒之sleep和wait的區別
使當前執行緒睡眠,但是並不釋放鎖 sleep是thread類的方法 sleep可以用在任何地方 sleep必須捕獲異常 使當前程序等待,但是釋放鎖。wait是object類的方法 wait,包括notify和notifall只能在synchrnized修飾的方法或 塊中使用 sleep不需要捕獲異常...
多執行緒的sleep,靜態鏈結
include include include include int mysleep unsigned int sleepsecond 這就可以繞過可能的 陷阱 在嵌入式應用裡面,除去通用的庫,出於空間的考慮,需要把一些程式進行靜態鏈結,如果在實現sleep這個程式的時候,使用這個mysleep呼...
多執行緒之執行緒同步
pulse lockobj 表示釋放當前被lock的lockobj,容許其他執行緒呼叫。相當於暫時掛起當前執行緒 wait lockobj 表示等待當前被其他執行緒占用的lockobj。下面的 將會交替執行兩個執行緒 class ticktock console.write tick monitor...