Проект

Общее

Профиль

JavaMultithreading » История » Версия 16

Александр Александров, 11.09.2018 01:32

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
167 16 Александр Александров
# "Нужна помощь с FileFilter":https://javatalks.ru/topics/18895
Go to top