ИСПОЛЬЗОВАНИЕ КЛАССОВ И БИБЛИОТЕК
6
Глава 9. ПОТОКИ ВВОДА/ВЫВОДА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225
Байтовые и символьные потоки ввода/вывода. . . . . . . . . . . . . . . . . . . . . . . 225
Класс File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Предопределенные потоки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Сериализация объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Класс Scanner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Архивация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Глава 10. КОЛЛЕКЦИИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253
Общие определения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Списки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Метасимвол в коллекциях . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Интерфейс ListIterator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Интерфейс Comparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Класс LinkedList и интерфейс Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Интерфейс Deque и класс ArrayDeque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Множества . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Карты отображений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Унаследованные коллекции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Алгоритмы класса Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Глава 11. ПОТОКИ ВЫПОЛНЕНИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .290
Класс Thread и интерфейс Runnable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Жизненный цикл потока. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Управление приоритетами и группы потоков . . . . . . . . . . . . . . . . . . . . . . . 293
Управление потоками . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Потоки–демоны . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Потоки и исключения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Атомарные типы и модификатор volatile . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Методы synchronized. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Инструкция synchronized . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Монитор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Методы wait(), notify() и notifyAll(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Новые способы управления потоками . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Перечисление TimeUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Блокирующие очереди . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Семафоры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Барьеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
«Щеколда» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Обмен блокировками . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Альтернатива synchronized. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
ExecutorService и Callable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Phaser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Глава 12. JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342
Драйверы, соединения и запросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
СУБД MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Простое соединение и простой запрос . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345