BlockingQueue阻塞主线程

时间:2018-04-14 16:50:19

标签: java multithreading blockingqueue

我正在尝试使用LinkedBlockingQueue在Java中运行一些多线程,但似乎行为并不像我期望的那样。我的主要方法是启动一个新线程,它只检查toSend队列是否已满。如果不是,那么它只是等到它。在这种情况下,我从来没有添加任何东西,但我仍然希望我的主方法在创建线程后继续行,并打印以下行:

System.out.println("Multithreading continues as expected");

最终,我的main方法继续实际创建另一个将数据包放入toSend的线程。但是,它无法继续创建线程。任何帮助将不胜感激!!

public static void main(String[] args) {
    System.out.println("we are here);
    SendThread s = new SendThread();
    s.run();
    System.out.println("Multithreading continues as expected");
}

LinkedBlockingQueue<Packet> toSend = new LinkedBlockingQueue<>();
public static class SendThread extends Thread {
    public void run() {
        System.out.println("Send Thread now active");
        while(true) {
            toSend.take();
            System.out.println("packet taken");
        }
    }
}

0 个答案:

没有答案