編寫多線程應用程序,模擬多個人通過一個山洞:
1、 這個山洞每次只能通過一個人,每個人通過山洞的時間為5秒
2、隨機生成10個人,同時准備過此山洞,顯示一下每次通過山洞人的姓名
MuThreadTest.java
package com.Train; public class MuThreadTest{ public static void main(String[] args) { // TODO Auto-generated method stub //創建一個山洞 Tunnel tul = new Tunnel(); //十個人過山洞 Thread p1 = new Thread(tul,"p1"); Thread p2 = new Thread(tul,"p2"); Thread p3 = new Thread(tul,"p3"); Thread p4 = new Thread(tul,"p4"); Thread p5 = new Thread(tul,"p5"); Thread p6 = new Thread(tul,"p6"); Thread p7 = new Thread(tul,"p7"); Thread p8 = new Thread(tul,"p8"); Thread p9 = new Thread(tul,"p9"); Thread p10 = new Thread(tul,"p10"); p1.start(); p2.start(); p3.start(); p4.start(); p5.start(); p6.start(); p7.start(); p8.start(); p9.start(); p10.start(); } } class Tunnel implements Runnable{ private int crossedNum = 0; //override public void run(){ Cross(); }
//同步函數--同步鎖為this,即main()中創建的tul。
public synchronized void Cross(){ try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } crossedNum++; System.out.println(Thread.currentThread().getName()+" have Crossed the tunnel !"+" This is "+crossedNum+"th"); } }
<console>: