我正在尝试使用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");
}
}
}