使用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其中的设计模式。

浙公网安备 33010602011771号