Чтение онлайн

на главную

Жанры

Java: руководство для начинающих
Шрифт:

// получить тему String getSelectionO { String topic = ""; BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Enter topic: ") ; try { topic = br.readLine; } catch(IOException exc) { System.out.println("Error reading console."); } return topic;

} 13. В теле этого метода сначала создается объект типа Buf feredReader, который связывается с потоком вывода System, in. Затем в нем запрашивается название темы, которое принимается и далее возвращается вызывающей части программы. 14. Ниже приведен весь исходный код программы, реализующей справочную систему, находящуюся на диске.

/* Пример для опробования 10.2. Справочная система, находящаяся

на диске. Для компиляции этой программы требуется JDK 7 или более поздняя версия данного комплекта.

/ import java.io.;

/ В классе Help открывается файл со справочной информацией, производится поиск названия темы, а затем отображается справочная информация по этой теме. Обратите внимание на то, что в этом классе поддерживаются все исключения, освобождая от этой обязанности вызывающий код. / class Help { String helpfile; // Имя файла со справочной информацией Help(String fname) { helpfile = fname; } // отобразить справочную информацию по заданной теме boolean helpon(String what) { int ch; String topic, info; // открыть справочный файл try (BufferedReader helpRdr = new BufferedReader(new FileReader(helpfile))) { do { // читать символы до тех пор, пока не встретится знак # ch = helpRdr.read; // а теперь проверить, совпадают ли темы if(ch =='#') { topic = helpRdr.readLine; if(what.compareTo(topic) == 0) { // тема найдена do { info = helpRdr.readLine; if(info != null) System.out.println(info); } while((info != null) && (info.compareTo("") != 0)); return true; } } } while(ch != -1); } catch(IOException exc) { System.out.println("Error accessing help file."); return false; } return false; // тема не найдена } // получить тему String getSelection { String topic = ""; BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Enter topic: "); try { topic = br.readLine; } catch(IOException exc) { System.out.println("Error reading console."); } return topic; }

}

// продемонстрировать справочную систему, находящуюся на диске class FileHelp { public static void main(String args[]) { Help hlpobj = new Help("helpfile.txt"); String topic; System.out.println("Try the help system. " + "Enter ’stop' to end."); do { topic = hlpobj.getSelection ; if(!hlpobj.helpon(topic)) System.out.println("Topic not found.\n"); } while(topic.compareTo("stop") != 0); }

} ``` Упражнение для самопроверки

по материалу главы 10

Для чего в Java определены как байтовые, так и символьные потоки?

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

Как открыть файл для чтения байтов?

Как открыть файл для чтения символов?

Как открыть файл для ввода-вывода с произвольным доступом?

Как преобразовать числовую строку "123.23" в двоичный эквивалент?

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

Перепишите программу, созданную в ответ на предыдущий вопрос, таким образом, чтобы в ней использовались классы, представляющие символьные потоки. На этот раз воспользуйтесь оператором try с ресурсами для автоматического закрытия файла.

К какому типу относится поток System. in?

Что возвращает метод read из класса InputStream по достижении конца потока?

Поток какого типа используется для чтения двоичных данных?

Классы Reader

и Writer находятся на вершине иерархии классов _ .

Оператор try без ресурсов служит для __ .

Если для закрытия файла используется традиционный способ, то это лучше всего делать в блоке finally. Верно или неверно?

Глава 11 Многопоточное программирование

Основные навыки и понятия

Общее представление о многопоточной обработке

Класс Thread и интерфейс Runnable

Создание потока

Создание нескольких потоков

Определение момента завершения потока

Использование приоритетов потоков

Представление о синхронизации потоков

Применение синхронизированных блоков

Взаимодействие потоков

Приостановка, возобновление и остановка потоков

Среди многих замечательных свойств языка Java особое место принадлежит поддержке многопоточного программирования. Многопоточная программа состоит из двух или более частей, выполняемых параллельно. Каждая часть такой программы называется потоком и определяет отдельный путь выполнения команд. Таким образом, многопоточная обработка является особой формой многозадачности. Общее представление о многопоточной обработке

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

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

Главное преимущество многопоточной обработки заключается в том, что она позволяет писать программы, которые работают очень эффективно благодаря возможности выгодно использовать время простоя, неизбежно возникающее в ходе выполнения большинства программ. Как известно, большинство устройств ввода-вывода, будь то устройства, подключенные к сетевым портам, накопители на дисках или клавиатура, работают намного медленнее, чем центральный процессор (ЦП). Поэтому большую часть своего времени программе приходится ожидать отправки данных на устройство ввода-вывода или приема информации из него. А благодаря многопоточной обработке программа может решать какую-нибудь другую задачу во время вынужденного простоя. Например, в то время как одна часть программы отправляет файл через соединение с Интернетом, другая ее часть может выполнять чтение текстовой информации, вводимой с клавиатуры, а третья — осуществлять буферизацию очередного блока отправляемых данных.

Поделиться:
Популярные книги

Лорд Системы 8

Токсик Саша
8. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 8

Осознание. Пятый пояс

Игнатов Михаил Павлович
14. Путь
Фантастика:
героическая фантастика
5.00
рейтинг книги
Осознание. Пятый пояс

Академия

Кондакова Анна
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Академия

Князь Мещерский

Дроздов Анатолий Федорович
3. Зауряд-врач
Фантастика:
альтернативная история
8.35
рейтинг книги
Князь Мещерский

Огненный князь 5

Машуков Тимур
5. Багряный восход
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 5

Новый Рал 4

Северный Лис
4. Рал!
Фантастика:
попаданцы
5.00
рейтинг книги
Новый Рал 4

Варлорд

Астахов Евгений Евгеньевич
3. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Варлорд

Пропала, или Как влюбить в себя жену

Юнина Наталья
2. Исцели меня
Любовные романы:
современные любовные романы
6.70
рейтинг книги
Пропала, или Как влюбить в себя жену

Инкарнатор

Прокофьев Роман Юрьевич
1. Стеллар
Фантастика:
боевая фантастика
рпг
7.30
рейтинг книги
Инкарнатор

Жена на пробу, или Хозяйка проклятого замка

Васина Илана
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Жена на пробу, или Хозяйка проклятого замка

Холодный ветер перемен

Иванов Дмитрий
7. Девяностые
Фантастика:
попаданцы
альтернативная история
6.80
рейтинг книги
Холодный ветер перемен

Корпулентные достоинства, или Знатный переполох. Дилогия

Цвик Катерина Александровна
Фантастика:
юмористическая фантастика
7.53
рейтинг книги
Корпулентные достоинства, или Знатный переполох. Дилогия

Приручитель женщин-монстров. Том 5

Дорничев Дмитрий
5. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 5

Довлатов. Сонный лекарь

Голд Джон
1. Не вывожу
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Довлатов. Сонный лекарь