1. 程式人生 > >多線程操作(鎖)

多線程操作(鎖)

資源 對象鎖 排它鎖 方法 多線程 臨界區 實現 str 通知

1.對象的加鎖及其操作

  程序中單獨的並發線程對同一對象進行操作的代碼段,成為臨界區。java語言中的臨界區可以是一個語句塊

或者方法,使用關鍵字synchronized進行標識。

  對象鎖:java平臺把由synchronized語句指定的對象 設置為對象鎖或者監視器(monitor),對象鎖是一種獨

立方式的排它鎖。

  排它鎖:當一個線程獲取對象鎖後,便擁有對該對象的完全操作權,其他任何線程不得對象改對象進行任何操作。

2.死鎖

  如果程序中多個線程相互等待對方持有的對象鎖,而如果得不到對方的對象鎖都不會釋放自己擁有的對象鎖,則

會造成線程不能繼續運行,這就是死鎖。

3.線程交互與同步

  wait,notify方法可以實現線程的同步

  當線程執行到synchronized塊時,如果裏面需要的資源得不到滿足、處於等待狀態,可以使用wait方法,這樣在等待

的同時並暫時釋放共享數據對象的鎖,其他線程可獲得改對象鎖。完成操作後,只要調用notify方法就可以通知正在等待

的線程重新占有鎖。

多線程操作(鎖)