2. Класс Thread для запуска потоков
Скачать 370.13 Kb.
|
1. Многопоточный подход, особенности Многопоточность позволяет создавать код таким образом, чтобы несколько действий могли выполняться одновременно в одной программе. Каждый поток Java имеет приоритет, который помогает операционной системе определять порядок, в котором планируются потоки. 2. Класс Thread для запуска потоков 3. Интерфейс Runnable для запуска потоков В Java многопоточность программы организуется с помощью интерфейса Runnable и класса Thread, который наследуется от Runnable. 4. Класс Thread для управления потоками 5. Понятие группы потоков Все потоки в языке Java должны входить в состав группы потоков. В классе Thread имеется три конструктора, которые дают возможность указывать, в состав какой группы должен входить данный создаваемый поток. Группы потоков особенно полезны, поскольку внутри их можно запустить или приостановить все потоки, а это значит, что при этом не потребуется иметь дело с каждым потоком отдельно. Группы потоков предоставляют общий способ одновременной работы с рядом потоков, что позволяет значительно сэкономить время и усилия, затрачиваемые на работу с каждым потоком в отдельности. 6. Управление группой потоков 7. Потоки-демоны Демон в широком значении – фоновая программа. В Java потоки-демоны имеют схожий смысл: это потоки для фоновых действий по обслуживанию основных потоков. Потоки не-демоны называются пользовательскими (user thread). По сравнению с пользовательскими потоками демоны имеют меньший приоритет выполнения. Демоны не выполняют самостоятельных задач, поэтому не препятствуют остановке, программа завершается не дожидаясь окончания их работы. 8. Проблемы совместного использования ресурсов C помощью ключевого слова synchronized можно сделать так, чтобы во время исполнения какой-либо программы одним потоком, другие потоки находились в режиме ожидания 9. Синхронизированный блок Synchronized (с англ. "синхронизированный") - это ключевое слово, которое позволяет заблокировать доступ к методу или части кода, если его уже использует другой поток. Существует два применения synchronized - для метода и для блока кода. 10. Синхронизированный метод Если другой поток выполняет синхронизированный метод, ваш поток заблокируется до тех пор, пока другой поток не отпустит монитор. 11. Поля volatile Определение переменной с ключевым словом volatile означает, что значение этой переменной может изменяться другими потоками. Операции чтения/записи volatile переменной являются атомарными. Результат операции записи значения в volatile переменную одним потоком, становится виден всем другим потокам, которые используют эту переменную для чтения из нее значения. 12. Методы класса Object для синхронизации потоков Возможность синхронизации в Java реализована в виде ключевого слова synchronized, указывающего на необходимость получения монопольной блокировки, и трех методов условной синхронизации, wait(), notify(), notifyall(), определенных в классе Object и поэтому наследуемых любым другим классом. 13. Правила прерывания потоков, запрещенные методы Распространенный способ завершения потока представляет опрос логической переменной. И если она равна, например, false, то поток завершает бесконечный цикл и заканчивает свое выполнение. Распространенный способ завершения потока представляет опрос логической переменной. И если она равна, например, false, то поток завершает бесконечный цикл и заканчивает свое выполнение. Либо мы можем сразу же в блоке catch выйти из цикла с помощью break. Если бесконечный цикл помещен в конструкцию try...catch, то достаточно обработать InterruptedException |