Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Main {
- public static void main(String[] args) {
- Clerk clerk = new Clerk();
- new Thread(new Producer(clerk)).start();
- new Thread(new Consumer(clerk)).start();
- }
- }
- class Clerk {
- private int product = 0;
- public synchronized int getProduct() {
- if (this.product > 1) {
- System.err.println("產品超過1個, " + product);
- System.exit(0);
- }
- if (this.product < 1) {
- try {
- this.wait();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- this.product = this.product - 1;
- int product2 = this.product;
- this.notify();
- return product2;
- }
- public synchronized int addProduct() {
- if (this.product > 1) {
- System.err.println("產品超過1個, " + product);
- System.exit(0);
- }
- if (this.product > 0) {
- try {
- this.wait();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- this.product = this.product + 1;
- int product2 = this.product;
- this.notify();
- return product2;
- }
- }
- class Producer implements Runnable {
- private Clerk clerk;
- public Producer(Clerk clerk) {
- this.clerk = clerk;
- }
- @Override
- public void run() {
- while (true) {
- int product = clerk.addProduct();
- System.out.println("生產者生產 1 個商品, 目前剩下的商品數量 " + product);
- }
- }
- }
- class Consumer implements Runnable {
- private Clerk clerk;
- public Consumer(Clerk clerk) {
- this.clerk = clerk;
- }
- @Override
- public void run() {
- while (true) {
- int product = clerk.getProduct();
- System.out.println("消費者拿到 1 個商品, 目前剩下的商品數量 " + product);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement