JavaMultithreading » История » Версия 15
Александр Александров, 09.09.2018 23:50
добавлен материал для 8 уровня
1 | 2 | Александр Александров | h1. Java Multithreading |
---|---|---|---|
2 | 1 | Александр Александров | |
3 | <pre> |
||
4 | Квест «Java Multithreading» познакомит студентов секретного центра JavaRush с многопоточностью. В течение 10 уровней вы будете изучать устройство объекта Object, String, |
||
5 | внутренние классы. Узнаете, как создавать и останавливать потоки, что такое DeadLock, Wait, notify, notifyAll, получите опыт работы с Jsop и Swing, а также узнаете об |
||
6 | автоупаковке и особенностях её реализации. На этом квесте вы создадите ваши первые мини-проекты — большие задачи. В обучающих целях их решение будет разбито |
||
7 | на этапы. Вам нужно будет написать несколько игр — тетрис, змейку, космическую стрелялку, арканоид. Также вы поработаете над серьезными многоступенчатыми задачами, |
||
8 | наподобие чата, эмулятора банкомата и даже парсера сайтов! |
||
9 | </pre> |
||
10 | |||
11 | h2. *Оглавление* |
||
12 | |||
13 | 4 | Александр Александров | [[JavaMultithreading#Java-Multithreading-Уровень-1-Устройство-объекта-Object-equals-hashCode-clone-wait-notify-toString|Java Multithreading. Уровень 1 *Устройство объекта Object: equals, hashCode, clone, wait, notify, toString(),...*]] |
14 | [[JavaMultithreading#Java-Multithreading-Уровень-2-String-mutable-immutable-format-StringTokenizer-StringBuilder-StringBuffer|Java Multithreading. Уровень 2 *String: mutable, immutable, format, StringTokenizer, StringBuilder, StringBuffer*]] |
||
15 | 1 | Александр Александров | |
16 | ---- |
||
17 | |||
18 | h2. Java Multithreading. Уровень 1 *Устройство объекта Object: equals, hashCode, clone, wait, notify, toString(),...* |
||
19 | |||
20 | |||
21 | # "*%{color: blue}Habrahabr:%* Разбираемся с hashCode() и equals()":https://habr.com/post/168195/ |
||
22 | # "Как сгенерировать hashCode в Java":http://www.seostella.com/ru/article/2012/10/04/kak-sgenerirovat-hashcode-v-java.html |
||
23 | # "Приложение А Передача и возврат объектов.":http://www.ccfit.nsu.ru/~deviv/courses/java/tij2nd/AppendixA.html |
||
24 | 3 | Александр Александров | |
25 | h2. Java Multithreading. Уровень 2 *String: mutable, immutable, format, StringTokenizer, StringBuilder, StringBuffer* |
||
26 | |||
27 | # "*%{color: brown}JavaRush:%* Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юникод (UTF 8, 16, 32) — как исправить проблему с кракозябрами":https://javarush.ru/groups/posts/1418-kodirovka-teksta-ascii-windows-1251-cp866-koi8-r-i-junikod-utf-8-16-32--kak-ispravitjh-problemu |
||
28 | # "*%{color: brown}JavaRush:%* Класс String":https://javarush.ru/groups/posts/1411-klass-string |
||
29 | # "*%{color: brown}JavaRush:%* Форматируем вывод чисел в Java":https://javarush.ru/groups/posts/1412-formatiruem-vihvod-chisel-v-java |
||
30 | # "*%{color: brown}JavaRush:%* Управление строками, функции для работы со строками в Java":https://javarush.ru/groups/posts/1413-upravlenie-strokami-funkcii-dlja-rabotih-so-strokami-v-java |
||
31 | # "*%{color: brown}JavaRush:%* Управление строками, функции для работы со строками в Java. Часть 2":https://javarush.ru/groups/posts/1414-upravlenie-strokami-funkcii-dlja-rabotih-so-strokami-v-java-chastjh-2 |
||
32 | # "*%{color: brown}JavaRush:%* Регулярные выражения в Java. Часть 1.":https://javarush.ru/groups/posts/1415-reguljarnihe-vihrazhenija-v-java-chastjh-1 |
||
33 | # "*%{color: brown}JavaRush:%* Регулярные выражения в Java. Часть 2":https://javarush.ru/groups/posts/1416-reguljarnihe-vihrazhenija-v-java-chastjh-2 |
||
34 | # "*%{color: brown}JavaRush:%* Основы регулярных выражений в Java. Часть 3":https://javarush.ru/groups/posts/1417-osnovih-reguljarnihkh-vihrazheniy-v-java-chastjh-3 |
||
35 | # "*%{color: gray}Wikipedia:%* Регулярные выражения":https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F |
||
36 | # "Книга: Регулярные выражения. Сборник рецептов.":https://cloud.resprojects.ru/s/5gKY47fFZexD6Wd |
||
37 | # Шпаргалка |
||
38 | |||
39 | {{dmsf_image(22)}} |
||
40 | 5 | Александр Александров | |
41 | h2. Java Multithreading. Уровень 3 *Внутренние классы, примеры: Map.Entry* |
||
42 | |||
43 | # "Ключевое слово final":http://wikijava.it-cache.net/index.php@title=Glava_7_Thinking_in_Java_4th_edition.html#.D0.9A.D0.BB.D1.8E.D1.87.D0.B5.D0.B2.D0.BE.D0.B5_.D1.81.D0.BB.D0.BE.D0.B2.D0.BE_final |
||
44 | # "ВНУТРЕННИЕ КЛАССЫ":http://wikijava.it-cache.net/index.php@title=Glava_10_Thinking_in_Java_4th_edition.html |
||
45 | # "Это ваш окончательный ответ?":https://www.ibm.com/developerworks/ru/library/j-jtp1029/ |
||
46 | # "Внутренние классы в Java (inner classes java)":http://www.quizful.net/post/inner-classes-java |
||
47 | # "Вложенные и внутренние классы в Java. Часть 1":http://easy-code.ru/lesson/java-nested-classes |
||
48 | # "Вложенные и внутренние классы в Java. Часть 2":http://easy-code.ru/lesson/local-anonymous-nested-classes-java |
||
49 | |||
50 | h2. Java Multithreading. Уровень 4 *Внутренние классы, особенности реализации* |
||
51 | |||
52 | # "*%{color: blue}Habrahabr:%* Охота на мифический MVC. Обзор, возвращение к первоисточникам и про то, как анализировать и выводить шаблоны самому":https://habr.com/post/321050/ |
||
53 | # "*%{color: blue}Habrahabr:%* Охота на мифический MVC. Построение пользовательского интерфейса":https://habr.com/post/322700/ |
||
54 | # "*%{color: blue}Habrahabr:%* Создание архитектуры программы или как проектировать табуретку":https://habr.com/post/276593/ |
||
55 | # "*%{color: brown}JavaRush:%* Класс MessageFormat":https://javarush.ru/groups/posts/590-klass-messageformat |
||
56 | # "Форматирование чисел, дат и текста.":http://forum.vingrad.ru/topic-66026.html |
||
57 | 6 | Александр Александров | |
58 | h2. Java Multithreading. Уровень 5 *Создание и остановка нитей: start, interrupt, sleep, yield.* |
||
59 | |||
60 | # "Полное руководство по Java 8 Stream API в картинках и примерах":https://annimon.com/article/2778 |
||
61 | # "Многопоточное программирование в Java 8. Часть первая. Параллельное выполнение кода с помощью потоков":https://tproger.ru/translations/java8-concurrency-tutorial-1/ |
||
62 | 14 | Александр Александров | # "Многопоточное программирование в Java 8. Часть вторая. Синхронизация доступа к изменяемым объектам":https://tproger.ru/translations/java8-concurrency-tutorial-2/ |
63 | 6 | Александр Александров | # "Собеседование по Java — многопоточность (вопросы и ответы)":http://javastudy.ru/interview/concurrent/ |
64 | # "*%{color: blue}Habrahabr:%* Обзор java.util.concurrent.*":https://habr.com/company/luxoft/blog/157273/ |
||
65 | # "*%{color: blue}Habrahabr:%* Многопоточность в Java":https://habr.com/post/164487/ |
||
66 | # "Будущее или интерфейс Future вместе с Callable":https://megahub.me/hub/java?w=77 |
||
67 | # "Перечисления в Java (java enum)":http://www.quizful.net/post/java_enums |
||
68 | # "Часть 2. Выполнение задач в многопоточном режиме":https://www.ibm.com/developerworks/ru/library/l-java_universe_multithreading_tasks/index.html |
||
69 | # "Программирование сокетов на Java":http://www.quizful.net/post/java-socket-programming |
||
70 | |||
71 | Диаграмма с уточнение того что выход из состояние waiting обязательно переходит только в blocked |
||
72 | |||
73 | {{dmsf_image(23)}} |
||
74 | |||
75 | Распространённая диаграмма состояний потоков в Java |
||
76 | |||
77 | {{dmsf_image(24)}} |
||
78 | |||
79 | Граф перехода состояний потоков Java |
||
80 | |||
81 | {{dmsf_image(25)}} |
||
82 | 7 | Александр Александров | |
83 | h2. Java Multithreading. Уровень 6 *Совместный доступ к монопольным данным: synchronized, volatile* |
||
84 | |||
85 | # "*%{color: brown}JavaRush:%*: Уровень 26. Ответы на вопросы к собеседованию по теме уровня. Часть 1. Вопросы 1-5, 10.":https://javarush.ru/groups/posts/1580-urovenjh-26-otvetih-na-voprosih-k-sobesedovaniju-po-teme-urovnja-chastjh-1-voprosih-1-5-10 |
||
86 | # "*%{color: brown}JavaRush:%*: Уровень 26. Ответы на вопросы к собеседованию по теме уровня. Часть 2. Вопросы 6-9, 11-12":https://javarush.ru/groups/posts/1582-urovenjh-26-otvetih-na-voprosih-k-sobesedovaniju-po-teme-urovnja-chastjh-2-voprosih-6-9-11-12 |
||
87 | # "*%{color: brown}JavaRush:%*: Паттерн Iterator":https://javarush.ru/groups/posts/1884-pattern-iterator |
||
88 | # "Атомарные классы пакета util.concurrent":http://java-online.ru/concurrent-atomic.xhtml |
||
89 | # "*%{color: violet}Stack Overflow%*: Что такое монитор, мьютекс и семафор? Это одно и тоже или разные вещи?":https://ru.stackoverflow.com/questions/661805/%D0%A7%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%D0%BC%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80-%D0%BC%D1%8C%D1%8E%D1%82%D0%B5%D0%BA%D1%81-%D0%B8-%D1%81%D0%B5%D0%BC%D0%B0%D1%84%D0%BE%D1%80-%D0%AD%D1%82%D0%BE-%D0%BE%D0%B4%D0%BD%D0%BE-%D0%B8-%D1%82%D0%BE%D0%B6%D0%B5-%D0%B8%D0%BB%D0%B8-%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D0%B5-%D0%B2%D0%B5%D1%89%D0%B8 |
||
90 | # "*%{color: gray}Wikipedia%*: Монитор (синхронизация)":https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80_(%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F) |
||
91 | # "*%{color: gray}Wikipedia%*: Мьютекс":https://ru.wikipedia.org/wiki/%D0%9C%D1%8C%D1%8E%D1%82%D0%B5%D0%BA%D1%81 |
||
92 | # "*%{color: violet}Stack Overflow%*: Сортировка в Java":https://ru.stackoverflow.com/questions/33385/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B2-java |
||
93 | # "Класс Arrays. Работа с массивами":http://turbopro.ru/index.php/yazyk-programmirovaniya-java/7693-11-klass-arrays-rabota-s-massivami |
||
94 | # "Элементарная реализация BlockingQueue на Java":http://jdevnotes.blogspot.com/2014/03/blockingqueue-java.html |
||
95 | # "*%{color: blue}Habrahabr%*: Как работает ConcurrentHashMap":https://habr.com/post/132884/ |
||
96 | # "Как использовать ConcurrentHashMap в Java":http://poltora.info/blog/kak-ispolzovat-concurrenthashmap-v-java/ |
||
97 | # "*%{color: red}JDK%*: Interface Lock":https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html |
||
98 | # "*%{color: red}JDK%*: Intrinsic Locks and Synchronization":https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html |
||
99 | # "Java Volatile Keyword":http://tutorials.jenkov.com/java-concurrency/volatile.html |
||
100 | # "Сортировка и упорядочивание. Интерфейсы Comparable и Comparator":http://echuprina.blogspot.com/2012/02/comparable-comparator.html |
||
101 | # "Difference between Comparator and Comparable in java":https://java2blog.com/difference-between-comparator-and-comparable-in-java/ |
||
102 | # "Полное руководство по Java 8 Stream API в картинках и примерах":https://annimon.com/article/2778 |
||
103 | # "Собеседование по Java — многопоточность (вопросы и ответы)":http://javastudy.ru/interview/concurrent/ |
||
104 | # "*%{color: blue}Habrahabr%*: Обзор java.util.concurrent.*":https://habr.com/company/luxoft/blog/157273/ |
||
105 | # "Java Lock API. Теория и пример использования":https://javadevblog.com/java-lock-teoriya-i-primer-ispol-zovaniya-concurrency-lock.html |
||
106 | # Урок Java 346: Volatile и happens before |
||
107 | |||
108 | {{youtube(PP1Ac_PDlCM)}} |
||
109 | 8 | Александр Александров | |
110 | 15 | Александр Александров | h2. Java Multithreading. Уровень 7 *DeadLock. Wait, notify, notifyAll* |
111 | 8 | Александр Александров | |
112 | # "*%{color: violet}Stack Overflow%*: Mutithreading with System.out.format and System.out.println":https://stackoverflow.com/questions/40234133/mutithreading-with-system-out-format-and-system-out-println |
||
113 | # "*%{color: brown}JavaRush%*: Взаимная блокировка(deadlock) в Java и методы борьбы с ней":https://javarush.ru/groups/posts/1422-vzaimnaja-blokirovkadeadlock-v-java-i-metodih-borjhbih-s-ney |
||
114 | 13 | Александр Александров | # "Пять вещей, которые вы не знали о ... пакете java.util.concurrent. Часть 1":https://www.ibm.com/developerworks/ru/library/j-5things4/ |
115 | 8 | Александр Александров | # "Пять вещей, которые вы не знали о ... пакете java.util.concurrent. Часть 2":https://www.ibm.com/developerworks/ru/library/j-5things5/index.html |
116 | # "*%{color: blue}Habrahabr%*: Справочник по синхронизаторам java.util.concurrent.*":https://habr.com/post/277669/ |
||
117 | # "Зачем wait() и notify() обрамлять в synchronized()?":https://javatalks.ru/topics/21956 |
||
118 | # "Ответы на вопросы по собеседованию Multithreading":https://jsehelper.blogspot.com/2016/01/multithreading-1.html |
||
119 | # "Зачем synchronized вокруг wait/notify?":https://dev.cheremin.info/2010/03/synchronized-waitnotify.html |
||
120 | # "*%{color: violet}Stack Overflow%*: BlockingQueue когда, зачем и ради чего?":https://ru.stackoverflow.com/questions/508067/blockingqueue-%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0-%D0%B7%D0%B0%D1%87%D0%B5%D0%BC-%D0%B8-%D1%80%D0%B0%D0%B4%D0%B8-%D1%87%D0%B5%D0%B3%D0%BE#508119 |
||
121 | # "Взаимная блокировка(deadlock) в Java и методы борьбы с ней":http://www.developersonthe.net/ru/posts/post_id/34-Vzaimnaja-blokirovkadeadlock-v-Java-i-metody-borby-s-nej/ |
||
122 | # "Что такое Deadlock, в каких случаях он бывает, как его можно избежать?":http://www.quizful.net/interview/java/Deadlock |
||
123 | # "Синхронизация потоков":http://www.skipy.ru/technics/synchronization.html |
||
124 | # "*%{color: brown}JavaRush%*: Ответы на вопросы к собеседованию Level27":https://javarush.ru/groups/posts/1611-otvetih-na-voprosih-k-sobesedovaniju-level27 |
||
125 | # "*%{color: blue}Habrahabr%*: Класс дедлоков про дедлок классов":https://habr.com/company/odnoklassniki/blog/255067/ |
||
126 | # "Более гибкая, масштабируемая блокировка в JDK 5.0":https://www.ibm.com/developerworks/ru/library/j-jtp10264/ |
||
127 | 9 | Александр Александров | # "Относительный путь относительно папки":http://www.cyberforum.ru/java-j2se/thread1224104.html |
128 | 11 | Александр Александров | # "NIO Java, обучающая статья":http://www.quizful.net/post/java-nio-tutorial |
129 | 10 | Александр Александров | # "Файлы и директории, класс File":http://java-online.ru/java-file.xhtml |
130 | 12 | Александр Александров | # "*%{color: violet}Stack Overflow%*: java zipentry getsize returns -1":https://stackoverflow.com/questions/36045421/java-zipentry-getsize-returns-1 |
131 | 8 | Александр Александров | |
132 | Синхронизаторы - Concurrency №4 - Advanced Java |
||
133 | |||
134 | {{youtube(XkAjmCIY2WI)}} |
||
135 | |||
136 | Урок по Java 83: Многопоточность 18: CountDownLatch |
||
137 | |||
138 | {{youtube(6dx3Ma4JeZE)}} |
||
139 | |||
140 | Алексей Шипилёв — Прагматика Java Memory Model |
||
141 | |||
142 | 1 | Александр Александров | {{youtube(iB2N8aqwtxc)}} |
143 | 15 | Александр Александров | |
144 | h2. Java Multithreading. Уровень 8 *ThreadGroup, ThreadLocal, Executor, ExecutorService, Callable. Опыт работы с Jsoup* |
||
145 | |||
146 | # "Understanding Custom ThreadFactory In Java":http://wilddiary.com/understanding_custom_threadfactory_in_java/ |
||
147 | # "Управление потоками, безопасность и ThreadGroup Java":http://src-code.net/upravlenie-potokami-bezopasnost-i-threadgroup-java/ |
||
148 | # "java.util.concurrent.ThreadLocalRandom Example":https://examples.javacodegeeks.com/core-java/util/concurrent/threadlocalrandom/java-util-concurrent-threadlocalrandom-example/ |
||
149 | # "Безопасность в Java":http://voituk.kiev.ua/2008/08/18/bezopastnost-v-java/ |
||
150 | # "*%{color: violet}Stack Overflow%*: Random over ThreadLocalRandom":https://stackoverflow.com/questions/23396033/random-over-threadlocalrandom |
||
151 | # "Потокобезопасные concurrent коллекции":http://java-online.ru/concurrent-collections.xhtml#copyonwritearraylist |
||
152 | # "*%{color: blue}Habrahabr%*: 10 советов по использованию ExecutorService":https://habr.com/post/260953/ |
||
153 | # "*%{color: violet}Stack Overflow%*: Как получить список мёртвых нитей в ThreadGroup?":https://ru.stackoverflow.com/questions/379786/%D0%9A%D0%B0%D0%BA-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D0%BC%D1%91%D1%80%D1%82%D0%B2%D1%8B%D1%85-%D0%BD%D0%B8%D1%82%D0%B5%D0%B9-%D0%B2-threadgroup#379911 |
||
154 | # "*%{color: violet}Stack Overflow%*: What are worker threads, and what is their role in the reactor pattern?":https://stackoverflow.com/questions/13235312/what-are-worker-threads-and-what-is-their-role-in-the-reactor-pattern |
||
155 | # "*%{color: blue}Habrahabr%*: Как это работает в мире java. Пул потоков":https://habr.com/post/326146/ |
||
156 | # "*%{color: blue}Habrahabr%*: Николай Гребнев (CUSTIS) — Что такое DDD? — доклад с конференции ADD":https://habr.com/company/sqalab/blog/142491/ |
||
157 | # "*%{color: gray}Wikipedia%*: Проблемно-ориентированное проектирование":https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 |
||
158 | # "*%{color: brown}JavaRush%*: 3 примера как разобрать HTML-файл в Java используя Jsoup.":https://javarush.ru/groups/posts/1086-3-primera-kak-razobratjh-html-fayl-v-java-ispoljhzuja-jsoup |
||
159 | # "Руководства по веб-технологиям":https://stepbystep.htmlbook.ru/?id=54 |
||
160 | # "*%{color: brown}JavaRush%*: Ответы на вопросы к собеседованию Level28":https://javarush.ru/groups/posts/1614-otvetih-na-voprosih-k-sobesedovaniju-level28 |
||
161 | # "*%{color: gray}Wikipedia%*: Стратегия (шаблон проектирования)":https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D1%82%D0%B5%D0%B3%D0%B8%D1%8F_%28%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29 |
||
162 | # "Thread pool pattern":http://www.quizful.net/post/Thread-pool-pattern |
||
163 | # "Что такое TDD и модульное тестирование":https://javarush.ru/groups/posts/6-chto-takoe-tdd-i-moduljhnoe-testirovanie- |
||
164 | # "Использование Look And Feel в приложениях на java":http://cloud-notes.blogspot.com/2012/12/look-and-feel-java.html |
||
165 | # "События и слушатели":http://java-online.ru/java-listener.xhtml |
||
166 | # "Диалоговые окна JOptionPane":http://java-online.ru/swing-joptionpane.xhtml |