1、 終止執行緒的方法
(1) interrupt()不會終止執行緒,知識設定終止標記。
(2) 如果interrupt返回的為true。則利用break()和return()來終止執行緒。
(3) interrupted檢測interrupt是否標記終止,如果標記則返回為true,否則返回為false。
例:for(inti=0;i<5;i++)catch(interruptedexception e)
}2、 執行緒的同步方法
(1) wait():被鎖定的物件可以呼叫wait()方法,這將導致當前執行緒被阻塞並釋放物件的互斥鎖,即解除了wait()方法當前物件的鎖定狀態,其他的執行緒就有機會訪問該物件。
(2) notify():喚醒呼叫wait()方法後被阻塞的執行緒。每次執行該方法只能喚醒乙個執行緒
(3) notifyall():喚醒所有呼叫wait()方法被阻塞的執行緒。
3、生產者和消費者
(1)生產者執行一次,消費者執行一次
(3)在某個時候執行緒a執行速度比較快,它讀完一次資料之後,執行緒b還沒來得及寫,執行緒a又來讀第二次。結果執行緒a讀不到資料,導致執行出錯
(4)執行緒b正在寫資料時,執行緒a也來讀取資料,這時可能執行緒b還沒將資料寫完,執行緒a將資料讀走,導致程式出錯
解決上述問題錯誤問題的方法
(1) 是生產者和消費者達到同步:在兩者上加上互斥鎖,但是會出現死鎖,則用wait()和notify()方法
(2) 在生產者和消費者之間建立乙個渠道
4、 time和timer
(1)timer類的實現類似腦中的功能,定時或每個一段時間出發一次執行緒。
(2)timertask類是乙個抽象類,該類實現了runnable介面,具備多執行緒的能力。
(3)通過繼承timertask類建立子類,使該子類獲得多執行緒的能力,將需要多執行緒執行的**書寫在run方法內部,然後通過timer類啟動執行緒的執行
(4)schedule()方法
public void schedule(timertask task,date time):該方法的作用是在到達time指定的時間或已經超過該時間時執行執行緒task。
date d = new date(2009-1900,10-1,1,10,0,0);
t. schedule(task,d);
public void schedule(timertask task, date firsttime, long period):
在時間到達firsttime開始,每隔period毫秒就啟動一次task指定的執行緒,這種方式會重複啟動執行緒。
date d = new date(2009-1900,10-1,1,10,0,0);
t. schedule(task,d,20000);
public void schedule(timertask task,long delay)在執行schedule方法delay毫秒以後啟動執行緒task。
t.schedule(task,1000);//在執行該行啟動**1000毫秒後啟動一次執行緒task
public void schedule(timertask task,long delay,long period):在執行schedule方法delay毫秒以後啟動執行緒task,然後每隔period毫秒重複啟動執行緒task
java執行緒 執行緒的常用方法
方法詳解 start 和 run 方法 setname 和 getname setpriority 和 getpriority setdaemon yield 和 join interrupt 執行緒常用方法 方法 功能start 啟動執行緒並執行相應的run 方法 run 執行緒要執行的 放入ru...
執行緒同步的方法
一 執行緒同步的方法 1 reentrantlock a 加鎖 reentrantlock lock new reentrantlock finally b condition variable condition fund finally 2 synchronized a 加鎖 synchroni...
執行緒同步的方法
1 wait方法 該方法屬於object的方法,wait方法的作用是使得當前呼叫wait方法所在部分 塊 的執行緒停止執行,並釋放當前獲得的呼叫wait所在的 塊的鎖,並在其他執行緒呼叫notify或者notifyall方法時恢復到競爭鎖狀態 一旦獲得鎖就恢復執行 呼叫wait方法需要注意幾點 第一...