Языки программирования
<<  Основы программирования на языке Java Основы программирования на языке Java  >>
Исключения пакета java
Исключения пакета java
Классы для реализации многопоточности
Классы для реализации многопоточности
16
16
Пример реализации пула потоков
Пример реализации пула потоков
23
23
Картинки из презентации «Основы программирования на языке Java» к уроку информатики на тему «Языки программирования»

Автор: Vsevolod. Чтобы познакомиться с картинкой полного размера, нажмите на её эскиз. Чтобы можно было использовать все картинки для урока информатики, скачайте бесплатно презентацию «Основы программирования на языке Java.ppt» со всеми картинками в zip-архиве размером 519 КБ.

Основы программирования на языке Java

содержание презентации «Основы программирования на языке Java.ppt»
Сл Текст Сл Текст
1Основы программирования на языке Java. 13Мониторы и синхронизация потоков. С
Стандартная библиотека Java: java.net; каждым объектом ассоциирован монитор,
Многопоточное программирование. (С) который можно использовать для
Всеволод Рылов, все права защищены. 1. синхронизации доступа к объекту В один
Новосибирск, 2004. момент времени только один поток может
2Ключевые слова – статус. Ключевые обладать монитором объекта Монитор объекта
слова, которые уже известны на текущий захватывается с помощью вызова синхронного
момент: abstract default if private this метода либо в синхронном блоке: class
boolean do implements protected throw AnotherClass { public void doIt() {…} } …
break double import public throws byte AnotherClass obj = new AnotherClass();
else instanceof return transient case //Захват монитора obj synchronized (obj) {
extends int short try catch final obj.doIt(); }. class MyClass { public
interface static void char finally long synchronized void doIt() { … } } … MyClass
strictfp volatile class float native super obj = new MyClass(); obj.doIt(); //Захват
while const for new switch continue goto монитора obj. 13. (С) Всеволод Рылов, все
package synchronized. 2. (С) Всеволод права защищены. Новосибирск, 2004.
Рылов, все права защищены. Новосибирск, 14Освобождение монитора. Монитор объекта
2004. освобождается автоматически по завершению
3Сетевое взаимодействие – стек выполнения синхронизированного метода или
протоколов. Сетевая модель DoD (Internet): блока Монитор может быть освобожден
3. (С) Всеволод Рылов, все права защищены. добровольно с помощью вызова на объекте
Новосибирск, 2004. методов wait(), wait(…). При этом
4Взаимодействие в Internet. 4. (С) вызвавший метод поток блокируется. Для
Всеволод Рылов, все права защищены. того чтобы воспользоваться семейством
Новосибирск, 2004. методов wait нужно захватить монитор
5Работа с сетью. Для работы с сетью объекта Методы notify() и notifyAll()
используется пакет java.net, позволяют возобновить исполнение
предоставляющий средства: адресации в потока(ов) заблокированного(ых) на
Internet (InetAddress, + средства java мониторе объекта с помощью вызова метода
1.4: Inet4Address, Inet6Address, из семейства wait() Для того чтобы вызвать
InetSocketAddress, SocketAddress) работы с notify или notifyAll нужно захватить
протоколом TCP (Socket, ServerSocket, монитор объекта Вызов метода notify()
SocketOptions) работы с протоколом UDP приведет к пробуждению первого попавшегося
(DatagramSocket, DatagramPacket, блокированного на объекте потока по
MulticastSocket) работы с URL и поддержки завершению синхронизированного метода или
HTTP (URL, URLConnection, блока в котором вызван notify(). 14. (С)
HttpURLConnection, JarURLConnection, Всеволод Рылов, все права защищены.
URLDecoder, URLEncoder, ContentHandler, Новосибирск, 2004.
URLStreamHandler) авторизации в Internet 15Пример синхронизации потоков. class
(Authenticator, PasswordAuthentication) Store { int count; public synchronized
динамической загрузки классов из сети void put() { count++; notify(); } public
(URLClassLoader). 5. (С) Всеволод Рылов, synchronized void get() { while (true) if
все права защищены. Новосибирск, 2004. (count > 0) { count--; return; } else
6Исключения пакета java.net. 6. (С) try { wait(); } catch
Всеволод Рылов, все права защищены. (InterruptedException e){…} } }. class
Новосибирск, 2004. Consumer extends Thread { Store s;
7Параллельный TCP сервер. import Consumer (Store s) {super();this.s=s;}
java.net.*; import java.io.*; public class public void run() { s.get(); } } class
TCPServer { public static void Producer extends Thread { Store s;
main(String[] args) throws IOException { Producer (Store s) {super();this.s=s;}
//Создаем новый серверный Socket на порту public void run() { s.put(); } public
2048 ServerSocket s = new static void main(…) { Store s = new
ServerSocket(2048); while (true) { Socket Store(); Consumer c = new Consumer(s);
clientSocket = s.accept(); //принимаем Producer p = new Producer(s); c.start();
соединение p.start(); } }. 15. (С) Всеволод Рылов,
System.out.println("Получено все права защищены. Новосибирск, 2004.
соединение 1616. (С) Всеволод Рылов, все права
от:"+clientSocket.getInetAddress() защищены. Новосибирск, 2004.
+":"+clientSocket.getPort()); 17Взаимная блокировка (deadlock). Поток
//Создаем и запускаем поток для обработки T1 захватывает монитор объекта X Поток T2
запроса Thread t = new Thread(new захватывает монитор объекта Y Поток T1
RequestProcessor(clientSocket)); пытается вызвать синхронизированный метод
System.out.println("Запуск объекта Y и, таким образом, блокируется
обработчика..."); t.start(); } } }. Поток T2 пытается вызвать
7. (С) Всеволод Рылов, все права защищены. синхронизированный метод объекта X и также
Новосибирск, 2004. блокируется T1 и T2 оказываются в
8Параллельный TCP сервер - продолжение. состоянии deadlock В сложном случае в
8. (С) Всеволод Рылов, все права защищены. состояние взаимной блокировки могут
Новосибирск, 2004. class RequestProcessor оказаться несколько потоков на нескольких
implements Runnable { Socket s; //Точка мониторах объектов. Такую ситуацию очень
установленного соединения сложно отлаживать. 17. (С) Всеволод Рылов,
RequestProcessor(Socket s) { this.s = s; } все права защищены. Новосибирск, 2004.
public void run() { try { InputStream 18Управление потоками. Для управления
input = s.getInputStream(); BufferedReader потоком служат следующие методы класса
reader = new BufferedReader(new java.lang.Thread: start() – запускает
InputStreamReader(input)); OutputStream поток на исполнение interrupt() –
output = s.getOutputStream(); прерывает исполнение потока. Поток может
OutputStreamWriter writer = new перехватить исключение
OutputStreamWriter(output); String line = InterruptedException pause() –
""; while ( true ) { приостанавливает исполнение потока
System.out.println("Ожидаем (deprecated). Поток не освобождает
строку..."); line = захваченные мониторы resume() –
reader.readLine(); if (line == null) возобновляет исполнение потока
break; System.out.println("Получена (deprecated) stop() – останавливает поток
строка:"+line); (deprecated). Поток освобождает
writer.write("ответ захваченные мониторы destroy() – разрушает
от:"+s.getLocalAddress()+":" поток (not implemented) sleep() –
+s.getLocalPort() +" приостанавливает исполнение потока на
для:"+s.getInetAddress()+":" определенное время join() – ожидает
+s.getPort()+" : завершения потока. 18. (С) Всеволод Рылов,
"+line+"\n"); все права защищены. Новосибирск, 2004.
writer.flush(); } writer.close(); 19Почему pause() и resume() небезопасны.
System.out.println("Обработчик Если поток T1 приостановлен с помощью
завершил работу"); } catch pause() в момент, когда он захватил
(IOException ex) { ex.printStackTrace(); } монитор объекта X, то монитор объекта
} }. остается захваченным. Если окажется что
9TCP Клиент для сервера. 9. import другому потоку T2, который должен
java.io.*; import java.net.*; public class возобновить работу T1 с помощью resume(),
TCPClient { public static void также понадобится монитор объекта X, то
main(String[] args) throws IOException { потоки окажутся во взаимной блокировке.
Socket s = new Поэтому pause() и resume() объявлены
Socket("127.0.0.1",2048); deprecated и не должны использоваться.
OutputStreamWriter writer = new Вместо вызова pause() и resume() можно
OutputStreamWriter(s.getOutputStream()); заставить поток, которым нужно управлять,
BufferedReader consoleReader = new проверять значение какой ни будь
BufferedReader(new переменной в которую можно заносить
InputStreamReader(System.in)); значение соответствующее желаемому
BufferedReader reader = new состоянию потока. Синхронизацию можно
BufferedReader(new обеспечить с помощью монитора объекта и
InputStreamReader(s.getInputStream())); вызовов wait(), notify(). 19. (С) Всеволод
String line = ""; do { Рылов, все права защищены. Новосибирск,
System.out.print("Введите 2004.
строку:"); line = 20Почему небезопасен метод stop(). Вызов
consoleReader.readLine(); if метода stop() заставляет поток освободить
(line.equalsIgnoreCase("exit")) захваченные мониторы Если с помощью
break; writer.write(line+"\n"); мониторов был защищен какой-ни будь ресурс
writer.flush(); line = reader.readLine(); (объект), то на момент вызова stop этот
System.out.println("Получен ресурс (объект) может оказаться в не
ответ:" + line); } while (true); консистентном состоянии При этом другие
writer.close(); } }. (С) Всеволод Рылов, потоки могут получить доступ к этому
все права защищены. Новосибирск, 2004. ресурсу что скорее всего приведет к
10Многопоточное программирование. некорректной работе программы. Поэтому
Системы с одним потоком используют подход, метод stop() объявлен deprecated Вместо
называемый циклом обработки событий с использования stop() можно, как и в случае
буферизацией (event loop with pooling) с методами pause() и resume(),
Единовременно может обрабатываться только воспользоваться специальной переменной,
одно событие При блокировке потока которая должна хранить желаемое состояние
прекращается работа всей программы В потока. Поток должен проверять значение
системах с многими потоками главный цикл и этой переменной и принимать решение о
механизм буферизации не нужен: дальнейшей работе на основании этого
Единовременно возможна обработка значения. 20. (С) Всеволод Рылов, все
нескольких событий Блокировка одного права защищены. Новосибирск, 2004.
потока не влияет на работу других потоков 21Пул потоков (thread pool). Поток
Поток может находится в нескольких является относительно дорогим ресурсом и
состояниях: running, ready to run, его создание может быть сопряжено со
suspended, resumed, blocked, stopped, значительными накладными расходами При
terminated Переключение потоков (context разработке программ – серверов зачастую
switch) происходит на основе динамически возникает необходимость в параллельной
изменяющихся приоритетов (preemptive обработке задач или запросов, при этом
multitasking) либо на добровольной основе создание потока каждый раз, когда это
Для синхронизации потоков используются нужно оказывается неэффективной
мониторы. 10. (С) Всеволод Рылов, все стратегией. Для решения подобной проблемы
права защищены. Новосибирск, 2004. можно воспользоваться «пулом потоков». Пул
11Классы для реализации многопоточности. потоков содержит несколько потоков готовых
11. (С) Всеволод Рылов, все права к работе, которых можно использовать по
защищены. Новосибирск, 2004. мере необходимости Пул потоков должен
12Создание потоков. Реализация обеспечивать: возможность быстрого
интерфейса runnable порождение от класса выделения потока для работы возможность
thread. Для получения текущего потока высвобождения потока систему оповещения о
нужно воспользоваться статусе выполняемых задач (для обеспечения
Thread.currentThread(). class MyRunnable обратной связи). 21. (С) Всеволод Рылов,
implements Runnable { public void run() { все права защищены. Новосибирск, 2004.
//execution starts here } } … Runnable 22Пример реализации пула потоков. 22.
target = new MyRunnable(); Thread t = new (С) Всеволод Рылов, все права защищены.
Thread (target, “one”); t.start(); class Новосибирск, 2004.
MyThread extends Thread { public void 2323. (С) Всеволод Рылов, все права
run() { //execution starts here } } … защищены. Новосибирск, 2004.
MyThread t = new MyThread(); 24Работа потоков с памятью. 24. (С)
t.setName(“two”); t.start(); 12. (С) Всеволод Рылов, все права защищены.
Всеволод Рылов, все права защищены. Новосибирск, 2004.
Новосибирск, 2004.
Основы программирования на языке Java.ppt
http://900igr.net/kartinka/informatika/osnovy-programmirovanija-na-jazyke-java-208024.html
cсылка на страницу

Основы программирования на языке Java

другие презентации на тему «Основы программирования на языке Java»

«Операция в программировании» - Несколько потоков обращаются к общему ресурсу. Классические задачи многопоточного программирования. Вопросы. Атомарные операции. Примитивы синхронизации. Производитель-потребитель. Справедливость Безусловная Слабая Сильная Безопасность Живучесть. Блокировка (lock, mutex). Задача о читателях и писателях.

«Объект объектно-ориентированного программирования» - Классы. Агрегация (aggregation); ассоциация (association); наследование (inheritance); метаклассы (metaclass). Слово "полиморфизм" греческого происхождения и означает "имеющий много форм". Однако объединение объектов в классы определяется не наборами атрибутов, а семантикой. Уникальность.

«Занимательный русский язык» - От доски до доски. Каникулы, при переводе с латыни, означают «собачка», «щенок»! Съешь же ещё этих мягких французских булок, да выпей чаю. Знали ли вы, что слово школа по-гречески значит «досуг»?! Вилами по воде писано. Загребать жар чужими руками. Без труда не выловишь и рыбку из пруда. Перо по-латыни будет пенна.

«Тренажёр по русскому языку» - Близость. Двухвариантные. Над-. Под-. Виды лингвистических тренажеров. Г. Мы продвигались к озеру черепашьими шагами. В-. Лингвистический тренажер помогает запомнить правописание орфограмм, слов- исключений. Прилечь. Приближение. Пре - / при-. Прерогатива. Присоединение. Приплыть. Раз- / рас-. Лингвистический тренажер- ИНФОРМАТОР.

«Языки программирования» - Независимые языки. Проблемно-ориентированный автоматный язык. Текстовый язык автоматного программирования. Транслятор. Интегрированная среда разработки. Недостатки средства UniMod. Достоинства средства UniMod. Генерация диаграмм. Автоматное расширение языка Java. Генератор кода. «Подсветка» ошибок. Инструментальное средство UniMod.

«Объектно-ориентированное программирование» - Инкапсуляция и ограничение доступа к данным. Абстрактные и реальные объекты. Повторное использование кода. У каждого экземпляра своя копия. Основы объектно-ориентированного программирования. Вопрос 2. 2. Что такое методы класса? Класс и Объект Класс - принципиально новый тип данных. Вопрос 3. Модульность Объектная декомпозиция.

Языки программирования

23 презентации о языках программирования
Урок

Информатика

130 тем
Картинки
900igr.net > Презентации по информатике > Языки программирования > Основы программирования на языке Java