import java.util.ArrayList; import java.util.List; public class PhoneManager { private List<String> phoneList = new ArrayList<>(); public synchronized void supportPhone(String name) { phoneList.add(name); System.out.println("提供 " + name + " 手机"); this.notify(); } public synchronized String buyPhone() throws InterruptedException { if (phoneList.size() == 0) { System.out.println("没有手机了,等待...."); this.wait(); } String name = phoneList.remove(0); System.out.println("购买 " + name + " 手机"); return name; } }
public class PhoneTest { public static void main(String[] args) { PhoneManager phoneManager = new PhoneManager(); BuyThread setThread = new BuyThread(phoneManager); SupportThread getThread = new SupportThread(phoneManager); setThread.start(); getThread.start(); } } class BuyThread extends Thread { private PhoneManager phoneManager; public BuyThread(PhoneManager phoneManager) { this.phoneManager = phoneManager; } @Override public void run() { while (true) { try { phoneManager.buyPhone(); } catch (InterruptedException e) { e.printStackTrace(); } } } } class SupportThread extends Thread { private PhoneManager phoneManager; public SupportThread(PhoneManager phoneManager) { this.phoneManager = phoneManager; } @Override public void run() { while (true) { try { phoneManager.supportPhone("小米"); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }