[color=brown][b][size=medium]最近溫習多執行緒通訊,所以用多執行緒簡單模擬了交通燈,感覺自己對執行緒方面的東西又有了進一步的理解。[/size][/b][/color]
[b]通過這個模擬明白了notify(),與wait()又一些特點。
下面將**貼上:[/b]
[b]交通燈類:[/b]
package com.xxg.entiry;
public class light
public synchronized void etow() catch (interruptedexception e)
num--;
system.out.println(num-10+"-----------[當前執行緒為]--------"+thread.currentthread().getname());
} catch (interruptedexception e) }}
}}public synchronized void ntos() throws interruptedexception catch (interruptedexception e)
num++;
system.out.println(num-10+"------------[當前執行緒為]------------"+thread.currentthread().getname());
}if(num==20)
notify();
wait();}}
}//********************==實現控制東西方向的執行緒********************=
package com.xxg.inter;
import com.xxg.entiry.light;
public class threa1 extends thread
public void run()
}//********************==實現控制南北方法的執行緒********************===
package com.xxg.inter;
import com.xxg.entiry.light;
public class threa2 extends thread
public void run() catch (interruptedexception e) }}
//*************************===test*************************====
package com.xxg.test;
import com.xxg.entiry.light;
import com.xxg.inter.threa1;
import com.xxg.inter.threa2;
public class test catch (interruptedexception e)
t2.start();}}
//*************************測試結果******************************==
東西方向等候10秒,南北方向通行
9-----------[當前執行緒為]--------thread-0
8-----------[當前執行緒為]--------thread-0
7-----------[當前執行緒為]--------thread-0
6-----------[當前執行緒為]--------thread-0
5-----------[當前執行緒為]--------thread-0
4-----------[當前執行緒為]--------thread-0
3-----------[當前執行緒為]--------thread-0
2-----------[當前執行緒為]--------thread-0
1-----------[當前執行緒為]--------thread-0
0-----------[當前執行緒為]--------thread-0
南北方向等候10秒,東西方向通行
1------------[當前執行緒為]------------thread-1
2------------[當前執行緒為]------------thread-1
3------------[當前執行緒為]------------thread-1
4------------[當前執行緒為]------------thread-1
5------------[當前執行緒為]------------thread-1
6------------[當前執行緒為]------------thread-1
7------------[當前執行緒為]------------thread-1
8------------[當前執行緒為]------------thread-1
9------------[當前執行緒為]------------thread-1
10------------[當前執行緒為]------------thread-1
東西方向等候10秒,南北方向通行
[b] 收穫:[/b]
[size=medium][b] 1.wait()的進一步理解:如果乙個執行緒呼叫了某個物件的wait方法,那麼該執行緒進入到該物件的等待池中(並且已經將鎖釋放),
如果未來的某一時刻,另外乙個執行緒呼叫了相同物件的notify方法或者notifyall方法,
那麼該等待池中的執行緒就會被喚起,然後進入到物件的鎖池裡面去獲得該物件的鎖,
如果獲得鎖成功後,那麼該執行緒就會沿著wait方法之後的路徑繼續執行。[color=red]注意是沿著wait方法之後[/color]
[/b][/size]
[color=green][size=medium][b]2.notify()方法為喚醒同乙個物件的鎖。比如說a.notify()方法之能喚醒對應a.wait()方法呼叫的執行緒,而不能喚醒b.wait()對應的執行緒。
呼叫notify()方法並不代表釋放當前物件的鎖。它只是去通知其他執行緒進入到鎖池裡面去,而這個執行緒也不一定立即獲的物件鎖。[/b][/size][/color]
交通燈控制
問題描述,十字路,東西方向和南北方向燈,綠20s黃5s紅25s,倒計時顯示時間,另外,警車救護車等特殊狀態,都顯紅燈,且時間顯示不斷閃爍,通過之後,恢復原狀態。以下是我編寫的源 library ieee use ieee.std logic 1164.all use ieee.std logic u...
智慧型交通燈
交通燈有很多種型別,下面這個,還是比較簡單的。東西 a 南北 b 兩幹道交於乙個十字路口,各幹道有一組紅 黃 綠三色的指示燈,要求用微控制器控制交通燈,實現以下功能 1 a 道和b道上均有車輛要求通過時,a b道輪流放行。a道放行5分鐘 除錯時改為5秒鐘 b道放行4分鐘 除錯時改為4秒鐘 4 綠燈轉...
例程5 交通燈
1.準備 直插led 3 220 電阻 3 麵包板 1 麵包板跳線 1 扎 準備好上述元件我們就可以開工了,和上節課的實驗原理一樣,下面是我們提供參考的原理圖,我們使用的分別是數字10 7 4介面 按照右圖鏈結好電路後,就可以開始編寫程式了。既然是交通燈模擬實驗,紅黃綠三色小燈閃爍時間就要模擬真實的...