Физика
Математика
Архитектура
Сети
Лекции
Интегралы
Начертательная
Курсовая

АЭС

Алгебра
Задачи
ТОЭ
Энергетика
Матанализ
Черчение
Графика

Подпроцессы в Java

1. В программах различаются прописные и строчные буквы. Так, слова WORD, WoRd, word, worD означают разные идентификаторы. IF может быть именем переменной, а if - ключевое слово 2. Кстати, об идентификаторах. Идентификатор - слово (последовательность символов без пробелов и знаков препинания), состоящее из букв, цифр, знаков _ и $, начинающееся с буквы.

Приоритеты подпроцессов

Планировщик подпроцессов виртуальной машины Java назначает каждому подпроцессу одинаковое время выполнения процессором, переключаясь с подпроцесса на подпроцесс по истечении этого времени. Иногда необходимо выделить какому-то подпроцессу больше или меньше времени по сравнению с другим подпроцессом. В таком случае можно задать подпроцессу больший или меньший приоритет.

В классе Thread есть три целые статические константы, задающие приоритеты:

Кроме этих значений можно задать любое промежуточное значение от 1 до 10, но надо помнить о том, что процессор будет переключаться между подпроцессами с одинаковым высшим приоритетом, а подпроцессы с меньшим приоритетом не станут выполняться, если только не приостановлены все подпроцессы с высшим приоритетом. Поэтому для повышения общей производительности следует приостанавливать время от времени методом sleep о подпроцессы с высоким приоритетом.

Установить тот или иной приоритет можно в любое время методом setPriorityfint newPriority), если подпроцесс имеет право изменить свой приоритет. Проверить наличие такого права можно методом checkAtcess(). Этот метод выбрасывает исключение класса Security&xception, если подпроцесс не может изменить свой приоритет.

Порожденные подпроцессы будут иметь тот же приоритет, что и подпроцесс-родитель.

Итак, подпроцессы, как правило, должны работать с приоритетом NORM_PRIORITY . Подпроцессы, большую часть времени ожидающие наступления какого-нибудь события, например, нажатия пользователем кнопки Выход, могут получить более высокий приоритет MAX_PRIORITY . Подпроцессы, выполняющие длительную работу, например, установку сетевого соединения или отрисовку изображения в памяти при двойной буферизации, могут работать с низшим приоритетом MIN_PRIORITY . В конструкторе с помощью метода getLocalHost() класса InetAddress получаем локальный адрес (обычно это "localhost"):

serverAddress = InetAddress.getLocalHost();


Основную работу выполняет объект класса ServerSocket. Этот объект создается на заданном порте и выполняет функции "слушателя":

ServerSocket listener = new ServerSocket(port);


При успешном создании объекта в бесконечном цикле устанавливается режим ожидания подключений со стороны клиентов. Метод accept создает паузу, которая заканчивается при поступлении нового подключения от очередного клиента. При этом создается новый объект класса Socket:

Socket client = listener.accept( );


Сообщения от клиентов могут поступать с различными скоростями, поэтому для параллельной обработки в данной программе предусмотрен класс handler, производный от класса Thread. Объект этого класса создается и запускается на выполнение командой

new handler(client, c).start();


В методе run этого потока происходит обмен информацией с клиентом. Для этого создаются два объекта - входной и выходной поток:

DataInputStream conin =
new DataInputStream (toClient.getInputStream());
PrintWriter conout =
new PrintWriter(toClient.getOutputStream(),true);


У клиента есть три попытки набора правильного PIN-кода. Кроме того, клиент может набрать команду CANCEL для завершения сеанса и команду SHUTDOWN для остановки сервера (разумеется, последняя возможность не слишком правдоподобна).
Таким образом, в данном примере рассмотрена только авторизация клиента. Получение информации о счете, возможность снятия денег со счета и т.п. не предусмотрены.

 

Проектирование

На главную