BlockingQueue блокирует основной поток

Я пытаюсь запустить многопоточность на Java с помощью LinkedBlockingQueue, но, похоже, поведение не такое, как я ожидал. Мой основной метод - запуск нового потока, который просто проверяет, заполнена ли очередь toSend. Если это не так, он просто ждет, пока это не произойдет. В этом контексте я никогда ничего не добавляю к нему, но все же ожидаю, что мой основной метод продолжит работу в строке после создания потока и напечатает следующую строку:

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

В конце концов, мой основной метод создает еще один поток, который помещает пакеты в 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");
        }
    }
}

s.start () Вот так начинается поток ..!

Yati Sawhney 14.04.2018 18:55

Большое спасибо!!!! У меня есть несколько других потоков, с которыми я использую start (), но по какой-то причине я просто решил использовать run ().

Vivek Raja 14.04.2018 19:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
18
0

Другие вопросы по теме