Thread類中sleep是為什麼是靜態方法
Thread sleep的含義
Thread類中sleep是靜態方法,表示當前執行緒休眠。
Thread的API
public static native void sleep(long millis) throws InterruptedException;
/**
* Causes the currently executing thread to sleep (temporarily cease
* execution) for the specified number of milliseconds, subject to
* the precision and accuracy of system timers and schedulers. The thread
* does not lose ownership of any monitors.
*
Thread.sleep是 使 當前 執行得執行緒 休眠,就是 Thread.sleep所在程式碼片段的執行緒
Thread sleep和例項.Slepp的區別???
package com.linkage.deadlock;
public class Thread_Sleep extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
System.out.println("執行執行緒");
}
}
public static void main(String[] args) {
Thread_Sleep tt=new Thread_Sleep();
tt.start();
while(true){
System.out.println("main---------------------------");
try {
tt.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
這個說明:tt.sleep還是在休眠主執行緒,而不是休眠 例項所線上程
tt.sleep和 Thread.sleep效果 是一樣的, 實際上都是 呼叫類的靜態方法
為什麼不設計成非靜態的,當例項呼叫時,該例項休眠 ?
1、sleep是靜態方法,那麼在實現Runnable的執行緒類也能呼叫。
2、sleep是靜態方法,所以sleep時候只是讓出了cup卻不能釋物件鎖,因為獲取不到物件。???
3、執行緒和例項並不是對等的,不是一個執行緒是一個例項,是你建立的例項繼承了Thread或者Runable,實現了run(),並呼叫start()的時候能執行多個執行緒,例項還是一個,執行緒卻是多個。所以例項休眠執行緒就休眠了這個假設不成立。