java--多線程習題練習


1.有一個抽獎池,該抽獎池中存放了獎勵的金額,該抽獎池用一個數組int[] arr = {10,5,20,50,100,200,500,800,2,80,300};
創建兩個抽獎箱(線程)設置線程名稱分別為“抽獎箱1”,“抽獎箱2”,隨機從arr數組中獲取獎項元素並打印在控制台上,格式如下:

抽獎箱1 又產生了一個 10 元大獎
抽獎箱2 又產生了一個 100 元大獎	
//.....
public class ChoujiangDemo {
public static void main(String[] args) {
	Chou c = new Chou();
	Thread t1 = new Thread(c,"抽獎箱1");
	Thread t2 = new Thread(c,"抽獎箱2");
	t1.start();
	t2.start();
}
}
public class Chou implements Runnable {
	int[] arr = { 10, 5, 20, 50, 100, 200, 500, 800, 2, 80, 300 };
	int num = arr.length;
	boolean[] flag = new boolean[arr.length];

	public void run() {

		while (true) {
			synchronized (this) {

				if (num > 0) {
					int index = (int) (Math.random() * arr.length);
					int get = arr[index];

					// 代表這張抽獎券抽過了
					if (flag[index] != true) {

						flag[index] = true;
						System.out.println(Thread.currentThread().getName()
								+ " 又產生了一個" + get + "元大獎");
						num--;
					}
				}
			}
		}
	}
}

=================================================================================
4、某公司組織年會,會議入場時有兩個入口,在入場時每位員工都能獲取一張雙色球彩票,假設公司有100個員工,利用多線程模擬年會入場過程,
並分別統計每個入口入場的人數,以及每個員工拿到的彩票的號碼。線程運行后打印格式如下:
編號為: 2 的員工 從后門 入場! 拿到的雙色球彩票號碼是: [17, 24, 29, 30, 31, 32, 07]
編號為: 1 的員工 從后門 入場! 拿到的雙色球彩票號碼是: [06, 11, 14, 22, 29, 32, 15]
//.....
從后門入場的員工總共: 13 位員工
從前門入場的員工總共: 87 位員工


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM