1. 程式人生 > >執行緒中的一些常用方法的用法 join()、yield()、sleep()、wait()、notify()、notifyAll()

執行緒中的一些常用方法的用法 join()、yield()、sleep()、wait()、notify()、notifyAll()

1.執行緒休眠sleep();:執行緒有優先順序,但是我們可以用此方法人為的改變它們的優先順序,讓執行緒暫停,它其他執行緒獲得分配空間。
用法:Thread.sleep(2000);//休眠兩秒
2.執行緒讓步yield();就是讓出自己的分配空間給其他執行緒,那麼問題來了,讓步多久呢?如果有兩條執行緒的話,是不是讓步到另外一條執行緒執行完呢?經測試,不是讓另外的執行緒執行,讓步時間是不確定的;
注意:當某個執行緒呼叫yield()方法之後,只有與當前執行緒優先順序形同或者更高的才能獲得執行機會。
用法:一般都是指定條件,如if(i==10){Thread.yield();}
3.執行緒插隊join():當某個程式呼叫其他執行緒的join()時,呼叫執行緒將會阻塞,直到插入的執行緒執行完畢,才執行該執行緒,如main執行緒中for(int i = 0; i < 100; i++){if(i == 2){t.join();}},當i等於2時,執行緒t將執行完畢再執行main中餘下的 i= 3 i=4 ……
用法:一般都是指定條件,如if(i==10){t.join();} 注意插隊肯定是在別的執行緒中插別人的隊,不可能在自己的執行緒中寫join(); 如 :t執行緒中寫t.join();,這種方法是不正確的。
4.wait():當前執行緒放棄同步鎖進入等待狀態,直到其他執行緒進入此同步鎖notify()或notifyAll()喚醒執行緒為止。
5.notify():喚醒鎖上等待的第一個呼叫wait()方法的執行緒。
6.notifyAll():喚醒同步鎖上呼叫wait()的所有執行緒。
注意:wait()、notify()、notifyAll()必須是同步鎖物件。
wait()、notify()、notifyAll()方法用法:

http://blog.csdn.net/qq_18581651/article/details/49534943