Многопоточное программирование на Java презентация
Содержание
- 2. Содержание Потоки Блокировки (синхронизация) Мониторы и условия Модель памяти Java Примеры
- 3. Потоки Часть 1
- 4. Создание потоков Класс Thread – поток Позволяет создавать потоки и производить
- 5. Создание потока (Runnable) Пример кода // Создание потока Thread t =
- 6. Создание потока (Thread) Не рекомендуется использовать Пример кода // Создание потока
- 7. Состояния потока Состояние потока возвращается методами int getState() и boolean isAlive()
- 8. Свойства потока Основные свойства id – идентификатор потока name – имя
- 9. Взаимодействие потоков Создание потока Запуск потока Ожидание окончания потока Прерывание потока
- 10. Ожидание окончания потока Методы класса Thread join() – ожидать до завершения
- 11. Прерывание потока Методы класса Thread interrupt() – установить флаг прерывания isInterrupted()
- 12. Дополнительные методы Приостановка выполнения sleep(time) – приостановить поток на время yield()
- 13. Блокировки (синхронизация) Часть 2
- 14. Общий случай Любой объект может служить блокировкой Снятие блокировки производится автоматически
- 15. Методы экземпляра Метод экземпляра может быть объявлен синхронизованным public synchronized int
- 16. Производитель-потребитель (1) Класс данных class Data { private Object data;
- 17. Производитель-потребитель (2) Установка значения public void set(Object data) {
- 18. Производитель-потребитель (3) Получение значения public Object get() {
- 19. Мониторы (условия) Часть 3
- 20. Монитор Любой объект может быть монитором Для взаимодействия с монитором поток
- 21. Мониторы и блокировки При ожидании монитора блокировка с него снимается При
- 22. Производитель-потребитель (2) Установка значения public synchronized void set(Object data)
- 23. Производитель-потребитель (3) Получение значения public synchronized Object get() throws
- 24. Модель памяти Java Часть 3
- 25. Основные свойства Атомарность Видимость Упорядоченность
- 26. Атомарность Атомарная операция выполняется как единое целое Операции над всеми типами
- 27. Пример int a = 0; long b = 0; a =
- 28. Видимость Изменения произведенные потоком 1 видимы потоком 2 Видимость гарантируется в
- 29. Пример int a = 0; int b = 0; a =
- 30. Упорядоченность Программы выполняются как если бы они были написаны последовательно С
- 31. Пример int a = 0; a = 1; a = 2;
- 32. Volatile-переменные Операции с volatile-переменными всегда атомарны При чтение значения volatile-переменной оно
- 33. Пример volatile List l = null; t1() { List l
- 34. Выводы При отсутствии правильной синхронизации потоки могут увидеть практически что угодно
- 35. Примеры Часть 4
- 36. Барьер public await(Barrier that) { // 0 synchronized (this) {
- 37. Диаграмма переходов для барьера
- 38. Гарантированный deadlock public void run() { // 0 synchronized (o1)
- 39. Диаграмма переходов для deadlock
- 40. Заключение Часть 6
- 41. Выводы Программы должны быть хорошо синхронизированы Недосинхронизированные программы могут вести себя
- 42. Ссылки JLS. Threads and Locks // http://java.sun.com/docs/books/jls/third_edition/html/memory.html Threads: Doing Two or
- 43. Вопросы
- 44. Скачать презентацию










































Слайды и текст этой презентации
Скачать презентацию на тему Многопоточное программирование на Java можно ниже:
Похожие презентации