Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Бишоп Д. -> "Эффективная робота Java 2" -> 198

Эффективная робота Java 2 - Бишоп Д.

Бишоп Д. Эффективная робота Java 2 — Спб.: Питер, 2002. — 592 c.
ISBN 966-552-107-1
Скачать (прямая ссылка): effektivnayarabotajava2002.djvu
Предыдущая << 1 .. 192 193 194 195 196 197 < 198 > 199 200 201 202 203 204 .. 259 >> Следующая

452
Глава 13. Робота с несколькими подпроцессами
13.2. Назначение подпроцессов
Для того чтобы “разбить” программу на подпроцессы, мы вначале должны определить, какие методы могут выполняться независимо, Обычно они уже находятся в классе, поэтому можно сказать, что именно класс станет подпроцессом и, возможно, в нескольких своих реализациях.
Класс Thread находится в пакете java.lang, и это означает, что он всегда доступен и не требует специального импортирования. Любой класс, который “хочет” быть классом-подпроцессом, должен наследовать класс Thread. Класс Thread реализует интерфейс Runnable, который имеет один метод — run. Следовательно, вероятный класс-подпроцесс должен реализовать метод run. Обычно исполнимая часть класса помещается в метод run (конечно же, позволяя этому методу вызывать другце необходимые методы).
Метод mam по умолчанию является подпроцессом, и из него или из другого активного метода, например из метода init, применяющегося в классе Applet, начинают свое выполнение другие подпроцессы. Другими словами, подпроцессы {и мы увидим это в последующих примерах) могут быть разбиты на собственные подпроцессы. Давайте рассмотрим простой пример с использованием подпроцессов, а затем вновь вернемся к теории.
Задача. Продемонстрировать работу подпроцессов.
Решение. Мы выберем простой пример, в котором в окно апплета выводятся разноцветные точки. В программе будет три одновременно выполняющихся подпроцесса, каждый из которых чертит точки своим нветом.
Программа. Программа написана как апплет, в котором метод init создает экземпляры трех подпроцессов и инициирует их выполнение. Эти подпроцессы являются экземплярами внутреннего класса, который наследует класс Thread и называется Spots. В каждом из подпроцессов Spots фиксируется цвет выводимой точки, после чего запускается в работу цикл методд run. Цикл вызывает метод draw, для того чтобы отобразить одну точку, затем выжидает установленное время (дословный перевод названия метода sleep — “спит”), после чего отображает следующую точку,
import java.awn.*; import java.applet. import java.awt,event.*;
public class SpotTest extends Applet { f
a
/*' Рисование точек автор Дж.М. Бишог;, август 2000 г.
Рисование точек
Чертит точки различного цвета.
* Демонстрирует использование простыл подпроцессов* */
int nix, my; int radius = Ю;
Назначение подпроцессов
453
int boardsize = 200; int change;
public void init t) t
boardSize - getSizeО.width - I; change = boardSize-radius;
// Создает yl инициирует вшіолнекие трех подпроцессов, new Spots(Color.red).startf); new Spots(Color,blue}.start{); new Spots (Color,green) .start();
class Spots extends Thread {
Color colour;
// Конструктор фиксирует цвет выводимой точки // для этого подпроцесса.
Spots[Color с) { colour = с;
1
// Очень простой метод run. public void run () { while (true) ? draw(); try {
sleep (500); І І миллисекунды
г
catch [InterruptedException e) t }
}
J
public void draw() {
Graphics g = getGraphics(); g.setColor(colour);
I і Вычисляет новые координаты для точки // и чертит ее -
шх - (int)(Math.random()*1000) % change; my ^ (int){Math.random(}*1000} % change; g.fillOval[шх, my, radius, radius);
)
}
454
Главо 13. Работа с несколькими подпроцессами
Тестирование. Наблюдая за выполнением программы*, мьт можем подумать, что все точки появляются одновременно (рис. 13.2). На самом же деле, хотя подпроцессы и выполняются одновременно, они, фактически, делят между собой процессор и выполняются по очереди. Просто они делают это так быстро, что мы не успеваем этого заметить.
Appiel started.
шШаШа
ШІШШ
Рис. 13.2. Выход опплета SpotTest
Класс Thread
• і
После неформального ознакомления с подпроцессами рассмотрим класс Thread более детально. Создание подпроцесса может быть выполнено двумя способами.
ThreadClass threadid = new ThreadCl&ss (parameters)} new ThxeadClass (parameters)
строке описания объект-і стооке объект создается
* Выполнение программы-апплета требует создания простейшего html-файла, текст которого приводится ниже:
<hunl>
<head>
<title>AniuieT Рисование точек</ ti tle>
</head>
<body>
<applet code—'^SpotTest:.class” width=4 0Q height=400x/applet> </body>
</html> — Прим. ред.
Назначение подпроцессов
455
Среди множества других класс Thread имеет следующие важные методы.
¦;¦ ¦•¦Л-Я. -Wi У-ш-ш- -¦—- >» тш шк rfb jWl ц і и і щ iT XX hv <¦ v. ••• ••
¦• - * ЛТ^ГЖКТИ •• РІ[#.|.ШТІйТ-ТШІ "
л^Г^Ф'• ' • ¦> A^
.-Y-ї..: .. .-.. .:_¦.. - l... ••¦xiLli:
<• < . >5 .'*.• -*-• « y -> .*.' v' --¦ .> ., ., , v,. Л A- . v.y л-.v's л w ” • •• ¦ v v ¦ •• і
Предыдущая << 1 .. 192 193 194 195 196 197 < 198 > 199 200 201 202 203 204 .. 259 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.