TCP-клиент, принимающий объекты - PullRequest
0 голосов
/ 21 июля 2011

Я пишу Java-программу, которая должна постоянно принимать сериализованные объекты на протяжении всего запуска приложения.Объекты отправляются сервером по запросу пользователя.

Мое основное приложение инициализирует tcp-клиент (расширяет поток) в своем методе run, но я пытаюсь прочитать объекты из строки из функции.

Псевдокод следует:

*tcp client extends thread

*global vars: ip, port, socket, oi stream, oo stream, object reference

*run()
      make connection

*getObject()
      object reference = (object).readobject()
      return object

Мое основное приложение вызывает client.getObject() в цикле обновления.может быть или нет ожидающий объект.

Я поступаю неправильно?

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Я бы предложил, чтобы ваш метод run () считывал все объекты и добавлял их в очередь.getOject () получает следующий объект из очереди.Вы также можете иметь int queueLength(), чтобы проверить, как все ожидают.

1 голос
/ 21 июля 2011

Вы пытаетесь выполнить "классический" режим работы сервера или неблокирующий ввод-вывод?

Если это первое, я бы порекомендовал блокирующую очередь на сервере для приема входящих запросов и пул потоков дляобработать их.Пусть сервер назначит поток для обработки запроса, когда он поступит, пока не будет исчерпан пул потоков;очередь запросов, пока потоки не будут освобождены и возвращены в пул.

Неблокирующая операция ввода-вывода - это совсем другой вопрос.Посмотрите, как Netty и node.js спроектированы и реализованы для этого.

У меня никогда не было бы расширения класса Thread - маловероятно, что выдобавить значительное новое поведение.Вместо этого реализуйте Runnable и передайте его экземпляру Thread.

...