и использует его для открытия
Конструктор
JabberClientThread берет
InetAddress и использует его для открытия
Socket. Вы возпожно уже начинаете видешь шаблон:
Socket используется всегда для создания некоторых типов
Reader и/или
Writer (или
InputStream и/или
OutputStream) объект, что является единственным способом, в котором
Socket может быть использован. (Вы можете, конечно, написать один-два класса для автоматизации этого процесса, вместо того , чтобы заново все это набирать, если для Вас это сложно.) Итак,
start( ) выполняет инициализации нити и вызывает метод
run( ). Здесь, сообщения отсылаются серверу и информация с сервера печатается на экране. Однако, нить имеет ограниченное время жизни и в один прекрасный момент завершается. Обратите внимание, что сокет очищается если конструктор завершается неуспешно, после того как сокет создается, но перед тем, как конструктор завершится. В противном случае ответственность за вызов метода
close( ) для сокета ложится на метод
run( ).
Переменная
threadcount хранит число - сколько объектов
JabberClientThread в данный момент существует. Она увеличивается в конструкторе и уменьшается при выходе из метода
run( ) (и это значит, что нить завершается). В методе
MultiJabberClient.main( ), Вы видите, что число нитей проверяется, и если нитей слишком много - новые не создаются. Затем метод засыпает. При этом, некоторые нити будут завершаться и новые смогут быть созданы. Вы можете поэкспериментировать с
MAX_THREADS, чтобы посмотреть когда у Вашей системы появятся проблемы с обслуживанием большого количества соединений.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий