oop思想实践-线程就是一个资源类,没有任何附属操作

OOP思想实践-线程就是一个资源类,没有任何附属操作

不要把Ticket 写成一个Runnable接口的实现,最好用lambda表达式

package com.example.juc;

public class SaleTicket {
    public static void main(String[] args) {
        Ticket ticket = new Ticket();
        new Thread(() -> {
            for (int i = 0; i < 40; i++) {
                ticket.sale();
            }
        }, "A").start();
        new Thread(() -> {
            for (int i = 0; i < 40; i++) {
                ticket.sale();
            }
        }, "B").start();
        new Thread(() -> {
            for (int i = 0; i < 40; i++) {
                ticket.sale();
            }
        }, "C").start();
    }
}

// 资源类 仅包含属性和方法
class Ticket {
    private int num = 20;

    public synchronized void sale() {
        if (num > 0) {
            System.out.println(Thread.currentThread().getName() + "卖出第" + (num--) + "剩余" + num);
        }

    }
}
posted @ 2021-11-27 11:23  Oh,mydream!  阅读(32)  评论(0编辑  收藏  举报