Java银行排队叫号系统

请帮忙检测一下这代码 循环不显示出来 不知道如何修改

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class BankQueue {
    private static int counter = 1;                // 叫号计数器
    private static Queue<Customer> queue = new LinkedList<>();   // 等待队列

    public static void main(String[] args) {
        int numOfWindows;             // 窗口数量
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入窗口数量:");
        numOfWindows = scanner.nextInt();
        for (int i = 0; i < numOfWindows; i++) {
            new Windows(i + 1).start();     // 创建并启动窗口线程
        }
        new Display().start();          // 启动显示线程
        new Server().start();           // 启动服务端线程
    }

    static class Customer {
        private int number;
        private String name;
        private String type;

        Customer(int number, String name, String type) {
            this.number = number;
            this.name = name;
            this.type = type;
        }

        int getNumber() {
            return number;
        }

        String getName() {
            return name;
        }

        String getType() {
            return type;
        }
    }

    static class Windows extends Thread {          // 窗口线程
        private int id;                     // 窗口编号
        private Customer currentCustomer;  // 当前正在受理的客户

        Windows(int id) {
            this.id = id;
        }

        public void run() {
            while (true) {
                synchronized (queue) {
                    if (!queue.isEmpty()) {       // 如果队列中有等待的客户
                        currentCustomer = queue.poll();  // 取出队首客户
                        System.out.printf("窗口 %d 正在为 %s(叫号:%d)办理业务:%s\n", 
                                id, currentCustomer.getName(), 
                                currentCustomer.getNumber(), currentCustomer.getType());
                        try {
                            Thread.sleep(5000);     // 模拟业务处理时间
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.printf("窗口 %d 的 %s(叫号:%d)业务处理完毕\n", 
                                id, currentCustomer.getName(), currentCustomer.getNumber());
                        currentCustomer = null;     // 客户被服务完毕,当前没有客户
                    }
                }
                try {
                    Thread.sleep(1000);           // 窗口轮询间隔
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    static class Display extends Thread {          // 显示屏线程
        public void run() {
            while (true) {
                synchronized (queue) {
                    if (!queue.isEmpty()) {
                        System.out.println("====== 当前排队情况 ======");
                        for (Customer customer : queue) {
                            System.out.printf("\t%-10s(叫号:%d)\n", 
                                    customer.getName(), customer.getNumber());
                        }
                        System.out.println("===========================");
                    }
                }
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    static class Server extends Thread {           // 排队机线程
        public void run() {
            Scanner scanner = new Scanner(System.in);
            while (true) {
                System.out.println("请输入姓名:(退出请按 Q)");
                String name = scanner.next();
                if (name.equalsIgnoreCase("Q")) {
                    System.exit(0);
                }
                System.out.println("请输入业务:");
                String type = scanner.next();

                synchronized (queue) {             // 将客户加入排队等待
                    queue.offer(new Customer(counter, name, type));
                    System.out.printf("\t%s 你好,你的叫号是:%d\n", name, counter++);
                }
            }
        }
    }
}


显示了吧, 哪里没显示?

img