執行緒-sleep()

岑**發表於2020-12-25

1.關於執行緒的sleep()方法:

static void sleep(long millis)
1:靜態方法:Thread.sleep();
2:引數為毫秒
3:作用:讓當前執行緒進入休眠,進入“阻塞狀態”

public  class myfile{
   
    public static void main(String[] args)  {
    	//讓當前主執行緒進入休眠,睡眠1s
    	try{
    		Thread.sleep(1000);//不管物件是誰,出現在main方法中,main執行緒休眠
    	}catch(InterruptedException e){
    		e.printStackTrace();
    	}
    	//1s後執行下列程式碼
    	System.out.println("java");
    }
}

2.sleep睡眠的太久了,怎麼叫醒一個正在睡眠的執行緒?

Thread.interrupt()方法

注意:這個不是終斷執行緒的執行,是終止執行緒的睡眠

public  class myfile{
   
    public static void main(String[] args)  {
    	Thread t=new Thread(new myrunnable());
    	t.setName("ttt");
    	//終斷執行緒睡眠
    	t.start();
    	t.interrupt();
    }
}
class myrunnable implements Runnable{
    //run()方法當中的異常不能throws,只能try catch
	//因為run()方法在父類沒有丟擲任何異常,子類不能比父類丟擲更多的異常
	@Override
	public void run() {
		System.out.println(Thread.currentThread().getName()+"-->begin");
		try{
			//這個執行緒睡眠1年
			Thread.sleep(1000*60*60*24*365);
		}catch(InterruptedException e){
			e.printStackTrace();
		}
		System.out.println(Thread.currentThread().getName()+"-->end");
	}
	
}

相關文章