Java как центр архипелага | страница 13
помощью конструкции try/catch/finally, либо в его определении
должна фигурировать конструкция
throws Exception1, Exception2, ...
Пример.
class Foo extends Object {
. . .
public void readFromFile (String fn) throws InvalidFormatException {
FileInputStream fis;
try {
fis = new FileInputStream (fn);
// Читаем данные из файла.
. . .
// Если файл имеет неправильный формат,
// вожбуждаем исключительную ситуацию:
throw new InvalidFormatException ("Wrong format");
. . .
}
catch (FileNotFoundException e) {
// Предпринимаем соответствующие действия
}
finaly {
if (fis != null )
fis.close(); // всегда закрываем файл, если он был открыт
}
}
. . .
}
В этом примере в методе readFromFile могут возникнуть две искл-
чительные ситуации. Первая связана с тем, что нужный файл не-
доступен. Эта ситуация обработывается внутри метода
readFromFile. Вторая исключительная ситуация может вознкнуть,
если файл имеет неправильный формат. Эта ситуация передается
для обработки наверх.
4.1.6. Механизм потоков
Механизм потоков - обязательная черта современных операционных
сред. За счет потоков обеспечивается масштабируемость программ-
ных систем, оптимальное использование аппаратных ресурсов, вы-
сокая скорость отклика на запросы пользователей. Поэтому нет
ничего удивительного в том, что в языке Java механизм потоков
представлен с самого начала и в полном об®еме.
В языке Java потоки представлены посредством класса Thread, ин-
терфейса ъunnable, спецификатора метода synchronized и методов
класса Object wait и notify.
4.1.6.1. Класс Thread и интерфейс ъunnable
Поток (thread) представляет собой отдельный поток управления в
пределах процесса. Таким образом, у каждого потока есть начало,
последовательность действий, текущее состояние и конец.
Поток запускается с помощью вызова метода start() класса
Thread. Последовательность действий, выполняемых в рамках пото-
ка, задается в методе run(). Подчеркнем, что метод run() ис-
пользуется только для задания помледовательности действий; явно
вызывать его не только не нужно, но и просто вредно.
Поток заканчивается либо при завершении выполнения метода
run(), либо с помощью явных вызовов методов класса Thread
stop() или destroy(). Возобновить работу завершенного потока
невозможно.
Для временной приостановки работы потока с последующим возоб-
новлением служат методы suspend(), sleep() и yeild().