public class locktest03
}// 手機類
class phone catch (interruptedexception e)
}// 發簡訊
public synchronized void sendmsg()
// say hello
public void sayhello()
}
結果
synchronized方法,鎖的是方法的呼叫者,這裡是兩個不同的物件,所以兩個物件phone1和phone2都會加鎖,執行時互不影響,但是由於phone1呼叫的call()方法會有休眠延遲列印,所以phone2的sendmsg方法先執行完畢,結果就是先發簡訊再打**
public class locktest04
}// 手機類
class phone catch (interruptedexception e)
}// 發簡訊
public static synchronized void sendmsg()
// say hello
public void sayhello()
}
結果
靜態同步方法屬於類,所以這裡的synchronized鎖的是class,class只有乙個,當call()方法被呼叫時會加鎖,呼叫sendmsg()方法的執行緒就需要等待了
多執行緒二 多執行緒安全問題
當多個執行緒共享同乙個全域性或者靜態變數,做寫的操作,可能會發生資料衝突問題,也就是執行緒安全問題。讀操作和區域性變數是不會發生的。二 執行緒安全的解決方法 該資源只能讓當前執行緒操作,操作完成之後,再讓其他執行緒執行 多執行緒之間同步 synchronized 使用鎖 lock 語法 synchr...
多執行緒問題
問題描述 有4個執行緒和1個公共的字元陣列。執行緒1的功能就是向陣列輸出a,執行緒2的功能就是向字元輸出b,執行緒3的功能就是向陣列輸出c,執行緒4的功能就是向陣列輸出d。要求按順序向陣列賦值abcdabcdabcd,abcd的個數由執行緒函式1的引數指定。注 c語言選手可使用windows sdk...
多執行緒問題
程式 是由多個程序組成的。可以理解為靜態的 程序 可以理解為執行中的程式。執行緒 是組成程序的單元,乙個程序中有多個執行緒。我們經常把執行緒看做是程序中的某乙個任務。方式一 繼承乙個thread類 方式二 實現乙個runnable介面 兩種方式相比較,哪個能好點那?一般建議是實現runnable介面...