java執行緒簡單模擬交通燈

2021-09-01 09:48:46 字數 3065 閱讀 5009

[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介面 按照右圖鏈結好電路後,就可以開始編寫程式了。既然是交通燈模擬實驗,紅黃綠三色小燈閃爍時間就要模擬真實的...