一、對wait和sleep的個人理解
wait表示等待的意思,當執行緒呼叫wait方法時,執行緒將會處於等待狀態,如果想要再次執行呼叫過wait方法的執行緒需要將其喚醒,使其脫離等待狀態
sleep表示休眠的意思,這種休眠是有時間限制的,休眠時間到了執行sleep方法的執行緒會繼續執行下去
二、區別:
(1)wait()被定義在object類中,它有函式的過載形式,可以有毫秒值,也可以沒有
(2)sleep()被定義在thread類中,並且是乙個static方法,必須有毫秒值
(3)wait()釋放cpu執行權,釋放鎖
(4)sleep()釋放cpu執行權,不釋放鎖
(5)wait()必須寫在同步**塊中,也就是說需要有鎖的支援
(6)sleep()可以寫在任意地方,但是具體讓哪個執行緒休眠,取決於哪個執行緒在執行該**
**演示等待-喚醒機制:
//執行緒間通訊-等待喚醒機制
package thread;
class
resource1
}class
input1
implements
runnable
public
void run()
catch (interruptedexception e)
}if(i%2==0)
else
resource.flag=false;
resource.notify();
}
i++;
}
}}class
output1
implements
runnable
public
void run()
catch (interruptedexception e)
}system.out.println(resource);
resource.flag=true;
resource.notify();}}
}}public
class
threaddemo4
}
Java多執行緒中notify和wait的問題
size medium 程式功能 4個執行緒,2個執行緒對某個數值進行加1 2個執行緒進行減1,要求該數在0和1之間切換。程式如下,大家看看問題出在 size decthread類,對sample的i進行減1的執行緒 public class decthread extends thread ove...
JAVA多執行緒 sleep和wait的區別
1 這兩個方法來自不同的類分別是,sleep來自thread類,和wait來自object類。sleep是thread的靜態類方法,誰呼叫的誰去睡覺,即使在a執行緒裡呼叫了b的sleep方法,實際上還是a去睡覺,要讓b執行緒睡覺要在b的 中呼叫sleep。2 最主要是sleep方法沒有釋放鎖,而wa...
linux shell程式設計多執行緒和wait命令學習
最近在使用shell做一些部署工作,在使用過程中,效率一直不高。想提高效率,經過分析發現,並不是所有操作都是需要序列的,一些操作是可以進行並行操作的。經過學習,shell裡面也是可以進行多執行緒程式設計的,而且十分方便,同時,wait命令可以進行shell的多執行緒同步控制。下面是shell多執行緒...