線程有時候回和其他線程***享壹些資源,比如內存、數據庫等。當多個線程同時讀寫同壹份***享資源的時候,可能會發生沖突。這時候,我們就需要引入線程“同步”機制,即各位線程之間要有順序使用,不能雜亂無章隨意使用。
線程同步的方法
1、wait():使壹個線程處於等待狀態,並且釋放所持有的對象的lock。
2、sleep():使壹個正在運行的線程處於睡眠狀態,是壹個靜態方法,調用此方法要捕捉InterruptedException異常。
3、notify():喚醒壹個處於等待狀態的線程,註意的是在調用此方法的時候,並不能確切的喚醒某壹個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先級。
4、notityAll ():喚醒所有處入等待狀態的線程,註意並不是給所有喚醒線程壹個對象的鎖,而是讓它們競爭。
擴展資料:
在壹般情況下,創建壹個線程是不能提高程序的執行效率的,所以要創建多個線程。但是多個線程同時運行的時候可能調用線程函數,在多個線程同時對同壹個內存地址進行寫入,由於CPU時間調度上的問題,寫入數據會被多次的覆蓋,所以就要使線程同步。
在多線程編程裏面,壹些敏感數據不允許被多個線程同時訪問,此時就使用同步訪問技術,保證數據在任何時刻,最多有壹個線程訪問,以保證數據的完整性。
參考資料: