有一個包包的數量為100個。分別從實體店和官網進行售賣! * 要求使用多執行緒的方式,分別列印實體店和官網賣出包包的資訊! *分別統計官網和實體店各賣出了多少個包包
阿新 • • 發佈:2019-02-18
Packages類:
public class Packages implements Runnable { private int packages = 100; Object object = new Object(); static int count = 0; int num = 0; @Override public void run() { while (true) { synchronized (object) { if (packages > 0) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } if (Thread.currentThread().getName().equals("實體店")) { count++; } else { num++; } System.out.println(Thread.currentThread().getName() + "===" + packages--); if (packages==0){ System.out.println("實體店共賣出了" + count + "個"); System.out.println("官網共賣出了"+num+"個"); break; } } } } } }
測試類:
public class PackagesTest { public static void main(String[] args) { Packages packages = new Packages(); Thread thread01 = new Thread(packages, "實體店"); Thread thread02 = new Thread(packages, "官網"); thread01.start(); thread02.start(); } }
主要是使用了執行緒的同步程式碼塊機制,來避免安全問題。
用num和count分別表示實體店和官網賣的包包數量,當包包數量為0時,說明包包已經被賣完了。使用if-else將最後的num和count輸出。