題目:建立20個執行緒,其中10個執行緒是將資料備份到a資料庫中,另外10個執行緒將資料備份到b資料庫中,並且備份a資料庫和b資料庫是交叉進行的。
首先建立出20個執行緒,效果如圖3-41所示。
通過一些手段將這20個執行緒的執行效果變成有序的,如圖3-42所示。
public class dbtools
for (int i=0; i<5; i++)
previsa = true;
notifyall();
} catch (interruptedexception e)
}public synchronized void backupb()
for (int i=0; i<5; i++)
previsa = false;
notifyall();
} catch (interruptedexception e) }}
public class backupa extends thread
public void run()
}public class backupb extends thread
public void run()
}public class run }}
+++++
+++++
+++++
+++++
+++++
^^^^^
^^^^^
^^^^^
^^^^^
^^^^^
+++++
+++++
+++++
+++++
+++++
^^^^^
^^^^^
^^^^^
^^^^^
^^^^^
…… 列印的效果是交替執行的。
交替列印的原理就是使用如下**作為標記:
private boolean volatile previsa = false;
實現了a和b執行緒交替備份的效果
CMake之交叉編譯
一 引言 很多時候,我們在開發的時候是面對嵌入式平台,因此由於資源的限制需要用到相關的交叉編譯。即在你host宿主機上要生成target目標機的程式。裡面牽扯到相關標頭檔案的切換和編譯器的選擇以及環境變數的改變等,我今天僅僅簡單介紹下相關cmake在面對交叉編譯的時候,需要做的一些準備工作。二 cm...
Linux之交叉編譯
交叉編譯 在乙個平台上生成另乙個平台的可執行 編譯 是在乙個平台上生成該平台的可執行程式 為什麼要交叉編譯 有的平台上不允許或者不能夠安裝我們所需要的編譯器比如c51。因為目的平台上的資源匱乏,無法執行我們所需要的編譯器。樹莓派是不是就不需要交叉編譯?錯。也要,樹莓派有時又是因為目的平台還沒建立,連...
等待 通知機制
waitnotify模式的注意事項 經典案例生產者消費者模式實現 實戰等待通知之交叉備份 舉例說明,廚師和服務員之間的互動 1.廚師做完一道菜的時間不確定,所以廚師將菜品放到 菜品傳遞臺 上的時間也不確定 2.服務員取到菜的時間取決於廚師,所以服務員就處於等待狀態 3.服務員如何取到菜呢?又得取決於...