使用Runnable接口改进排队叫号

Runnable接口改进排队叫号

接下来通过Runnable实现一下我们之前的排队叫号感受一下

/**
 * @program: ThreadDemo
 * @description: 银行大厅
 * @author: hs96.cn@Gmail.com
 * @create: 2020-08-28
 */
public class BankRunnable {
    public static void main(String[] args) {
        //一个runnable实例被多个线程共享
        TicketWindowRunnable ticketWindow = new TicketWindowRunnable();

        Thread windowThread1 = new Thread(ticketWindow, "一号窗口");
        Thread windowThread2 = new Thread(ticketWindow, "二号窗口");
        Thread windowThread3 = new Thread(ticketWindow, "三号窗口");
        windowThread1.start();
        windowThread2.start();
        windowThread3.start();
    }
}
/**
 * @program: ThreadDemo
 * @description: 柜台,业务处理窗口。继承Runnable接口
 * @author: hs96.cn@Gmail.com
 * @create: 2020-08-28
 */
public class TicketWindowRunnable implements Runnable {
    private int index = 1;
    private static final int MAX = 50;

    @Override
    public void run() {
        while (index <= MAX) {
            System.out.println(Thread.currentThread().getName() + " 的号码是:" + (index++));
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

可以看到 index没有被static修饰,一个runnable实例被多个线程共享了,运行效果如下:

能达到我们的目的,但是这种写法更加好,线程的逻辑全封装到一个实例中,接下来我们用一个例子来理解一下Runnable其中的设计模式。

posted @ 2020-08-28 00:31  风暴松鼠  阅读(150)  评论(0)    收藏  举报