{"id":299878,"date":"2020-03-09T15:00:19","date_gmt":"2020-03-09T15:00:19","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=299878"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=299878","title":{"rendered":"\u0412\u043e\u043f\u0440\u043e\u0441\u044b \u043a \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e Java-backend, Java core (60 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432)"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/485678\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gj\/ko\/2r\/gjko2rfc3vgv4xcwlactd49illu.jpeg\" alt=\"image\"><\/p>\n<p>  \u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c! \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e Java Backend, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u043b \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u043e\u043a\u043e\u043b\u043e 2\u0445 \u043b\u0435\u0442. <\/p>\n<p>  \u0412\u043e\u043f\u0440\u043e\u0441\u044b \u0440\u0430\u0437\u0431\u0438\u0442\u044b \u043f\u043e \u0442\u0435\u043c\u0430\u043c: <b>core<\/b>, <b>collections<\/b>, <b>concurrency<\/b>, <b>io<\/b>, <b>exceptions<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0445\u043e\u0434\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0417\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0430\u043c\u0438 \u043e\u0442\u043c\u0435\u0447\u0435\u043d \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 (\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u0430) \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430, \u0432 \u0441\u043d\u043e\u0441\u043a\u0435 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u0430 \u2014 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441. \u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e\u0432\u0435\u0440\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043c\u044b\u0441\u043b\u0438 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u041e\u043f\u0440\u043e\u0441\u043d\u0438\u043a \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u0440\u043e\u043b\u044c \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043e\u0446\u0435\u043d\u043a\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u0430\u0432\u044b\u043a\u043e\u0432 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430, \u044d\u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0442\u0435\u043c \u043f\u043e Java \u0438 \u0441\u043e\u043f\u0443\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c, \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c \u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0438\u0445 \u0432 \u0441\u0435\u0442\u0438 \u0434\u0435\u0441\u044f\u0442\u043a\u0438. \u041e\u043d\u0430 \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0446\u0435\u043b\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445, \u0432 \u0443\u0434\u043e\u0431\u043d\u043e\u043c \u0434\u043b\u044f \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0425\u0430\u0431\u0440\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u043a \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0438, \u00ab\u0440\u0430\u0437\u043c\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0435\u00bb \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u0438\u0441\u043a\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0433\u043b\u0443\u0431\u0436\u0435 \u043a\u043e\u043f\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0443\u0436\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<br \/>  \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043d\u0435 \u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u0441 \u043f\u0440\u0438\u043c\u0435\u0441\u044c\u044e \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u0440\u0435c\u0441\u0438\u0438 (\u0447\u0442\u043e \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u043a\u043e\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u044e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043f\u044f\u0442\u043d\u0438\u0446\u0443). \u042d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u044f \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u0438 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0441 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0441\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0430\u0432\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f.<br \/>  \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044e \u2014 \u043d\u0435 \u043d\u0430\u0434\u043e \u0437\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0431\u0435\u0434\u043d\u044b\u0445 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0432\u0441\u0435\u043c\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430.<\/p>\n<h3>\u0421\u0435\u043a\u0446\u0438\u044f Core:<\/h3>\n<p>  <\/p>\n<ul>\n<li> \u041d\u0430\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/Object.html\" rel=\"nofollow\">Object<\/a>. (*) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>toString()<\/li>\n<li>equals()<\/li>\n<li>hashCode()<\/li>\n<li>wait()<\/li>\n<li>notify()<\/li>\n<li>notifyAll()<\/li>\n<li>finalize() \u2014 deprecated \u0432 Java 9+<\/li>\n<li>getClass()<\/li>\n<\/ul>\n<p>   \u041f\u0440\u043e toString(), equals(), hashCode() \u0438 \u0438\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0437\u043d\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e   <\/div>\n<\/div>\n<\/li>\n<li> \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 string-pool? \u0412 \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u0435 c\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 new \u043e\u0442 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 String.intern()? (*)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">   string-pool \u2014 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0445\u0440\u0430\u043d\u044f\u0449\u0430\u044f \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u043e\u043a-\u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. <br \/>   String.intern(), \u0441\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u0435\u0440\u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u043f\u0443\u043b\u0430, \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0439. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u0445 \u0432\u0438\u0434\u0430:<\/p>\n<pre><code class=\"java\">new String(&quot;hello&quot;).intern() == new String(&quot;hello&quot;).intern()<\/code><\/pre>\n<p>   \u0422.\u043a \u0431\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 equals, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u043f\u0443\u043b\u0430, \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441 true.<\/p><\/div>\n<\/div>\n<\/li>\n<li> \u041f\u043e\u0447\u0435\u043c\u0443 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u0432 char[]\/byte[], \u0430 \u043d\u0435 \u0432 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/String.html\" rel=\"nofollow\">String<\/a>? (**)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u0421\u0442\u0440\u043e\u043a\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430 \u0441\u0440\u0430\u0437\u0443 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u044c, \u043f\u043b\u044e\u0441 \u043e\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 string-\u043f\u0443\u043b\u0435<\/li>\n<li>byte[]\/char[] \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u041f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043b\u043e\u0445\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 hashCode() (*)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u041c\u0435\u0442\u043e\u0434, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443, \u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0445\u044d\u0448\u043a\u043e\u0434\u043e\u0432 \u0441 \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0438\u043c \u043a \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044f\u043c<\/div>\n<\/div>\n<\/li>\n<li> \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b, \u0432\u0440\u0430\u043f\u043f\u0435\u0440\u044b. Package\/unpackage (boxing\/unboxing). (*) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u0422\u0438\u043f\u044b \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u0443\u0447\u0435, \u0438\u0445 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u0441\u0442\u0435\u043a-\u0444\u0440\u0435\u0439\u043c\u0430<\/li>\n<li>Package \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430-\u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u0432 \u0445\u0438\u043f\u0435 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430-\u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u0430\u043a Integer, \u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 int \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430. Unpackage \u2014 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e == \u0438 \u043f\u043e equals (*) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e &quot;==&quot; \u2014 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c<\/li>\n<li>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u00abequals\u00bb \u2014 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d equals, \u0442\u043e \u044d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e \u0438\u0445 \u043f\u043e\u043b\u044f\u043c, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0442\u044c equals (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u0420\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u044c: a==a<\/li>\n<li>\u0421\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0441\u0442\u044c: a==b, b==a<\/li>\n<li>\u0422\u0440\u0430\u043d\u0437\u0438\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c: a==b, b==c, a==c<\/li>\n<li>\u041a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c: \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b equals \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u041e\u0442\u043b\u0438\u0447\u0438\u044f String\/StringBuilder\/StringBuffer (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/String.html\" rel=\"nofollow\">String<\/a> \u2014 \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/StringBuilder.html\" rel=\"nofollow\">StringBuilder<\/a> \u2014 helper-\u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a, \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/StringBuffer.html\" rel=\"nofollow\">StringBuffer<\/a> \u2014 \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 StringBuilder, \u0441 synchronized \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u041f\u0440\u0438\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0438 equals (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441 Point2D c \u043f\u043e\u043b\u044f\u043c\u0438 x,y: double<\/li>\n<li>\u0423\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043e\u0442 \u043d\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441 ColoredPoint2D c \u0434\u043e\u043f. \u043f\u043e\u043b\u0435\u043c color<\/li>\n<li>a: Point2D<\/li>\n<li>b: ColoredPoint2D<\/li>\n<li>a.equals(b), !b.equals(a)<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/li>\n<li> Interface vs Abstract Class. (*) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0435\u0441\u0442\u044c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f API, \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u2014 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/li>\n<li>\u0427\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0435.<\/li>\n<li>\u0412 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044f \u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> override vs overload (*) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>override \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u0442\u0438\u043f\u0430\u0445-\u043f\u043e\u0442\u043e\u043c\u043a\u0430\u0445<\/li>\n<li>overload \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c, \u043d\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u041a\u0430\u043a \u0432 Java \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0442\u0435\u0447\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438? (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0441\u0442\u0435\u043a\u0430, \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 pop() \u043d\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 null. <\/li>\n<li>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/HashMap.html\" rel=\"nofollow\">HashMap<\/a> \u0432\u043c\u0435\u0441\u0442\u043e <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/WeakHashMap.html\" rel=\"nofollow\">WeakHashMap<\/a> \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432\u0430\u0448\u0438\u0445 \u0442\u043e\u0432\u0430\u0440\u043e\u0432, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438.\u0442.\u0434 \u0432. \u0422.\u043a \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043a\u043b\u044e\u0447\u0438 \u0441\u0438\u043b\u044c\u043d\u044b\u0435 (strong references), \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u044d\u0442\u0438\u043c \u043a\u043b\u044e\u0447\u0430\u043c \u0431\u0443\u0434\u0443\u0442 \u0432\u0438\u0441\u0435\u0442\u044c \u0432 \u0445\u0438\u043f\u0435 \u0434\u043e <s>\u043c\u043e\u0440\u043a\u043e\u0432\u043a\u0438\u043d\u043e\u0433\u043e \u0437\u0430\u0433\u043e\u0432\u0435\u043d\u044c\u044f<\/s> \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 jvm \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430 \u0438\u0437 \u043c\u0430\u043f\u044b \u0438 \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e. \u0412\u043e\u043e\u0431\u0449\u0435, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u2014 \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430<\/li>\n<li>\u0422\u0430\u043a\u0436\u0435, <a href=\"https:\/\/www.toptal.com\/java\/hunting-memory-leaks-in-java\" rel=\"nofollow\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a> (\u043d\u043e \u0441\u0442\u0430\u0440\u043e\u0432\u0430\u0442\u0430\u044f)<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u041a\u0430\u043a \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b\/\u0447\u0438\u0441\u0435\u043b \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439? (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Random.html\" rel=\"nofollow\">java.util.Random<\/a>   <\/div>\n<\/div>\n<\/li>\n<li> \u0412 \u0447\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Random.html\" rel=\"nofollow\">Random<\/a>? (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Random.html\" rel=\"nofollow\">Random<\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0447\u0438\u0441\u043b\u043e\u0432\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043d\u0430 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u043c \u043a\u043e\u043d\u0433\u0440\u0443\u044d\u043d\u0442\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u0438 seed&#8217;\u0435, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043d\u0430 timestamp&#8217;\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f <i>j.u.Random<\/i>. <br \/>   \u0421\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0437\u043d\u0430\u044f \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0422\u0430\u043a\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u0438 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0441\u0442\u043e\u0439\u043a\u0438\u043c. \u0414\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/security\/SecureRandom.html\" rel=\"nofollow\">SecureRandom<\/a><\/div>\n<\/div>\n<\/li>\n<li> GC \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0435\u0433\u043e \u0432\u0438\u0434\u044b \u0432 JVM. \u041a\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u043c. \u041a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430 (\u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438).(**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u0412\u0438\u0434\u044b GC:   <\/p>\n<ul>\n<li>Serial Stop the World<\/li>\n<li>Parallel<\/li>\n<li>CMS (\u0412 \u0447\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 Parallel?)<\/li>\n<li>G1 (\u041d\u0430\u0437\u0432\u0430\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 CMS)<\/li>\n<li>Shenandoah<\/li>\n<\/ul>\n<p>   \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u043c \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u0438\u043b\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u0442\u043e \u043e\u043d \u043d\u0435 \u043f\u043e\u0434\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043a\u0435 \u043c\u0443\u0441\u043e\u0440\u0430<\/p><\/div>\n<\/div>\n<\/li>\n<li> Java 8: \u0441\u0442\u0440\u0438\u043c\u044b, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Optional.html\" rel=\"nofollow\">Optional<\/a> (**)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/stream\/Stream.html\" rel=\"nofollow\">Stream<\/a> \u2014 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 (filter, map, reduce, peek)<br \/>   \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0442\u0440\u0438\u043c\u0430\u0445 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u043d\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435. \u041d\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442 pipeline \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u0441\u0430\u043c\u0443 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, collect) \u2014 \u043f\u0440\u043e\u0432\u043e\u0434\u044f\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f pipeline&#8217;\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/stream\/Stream.html\" rel=\"nofollow\">Stream<\/a>.<\/p>\n<p>   <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/FunctionalInterface.html\" rel=\"nofollow\">FunctionalInterface<\/a> \u2014 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044f\u043c\u0431\u0434\u044b \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043b\u044f\u043c\u0431\u0434\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u043c\u0435\u0442\u043e\u0434)<\/p>\n<p>   <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Optional.html\" rel=\"nofollow\">Optional<\/a> \u2014 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043f\u0440\u0435\u0434\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u043e\u0442 nullable \u0441\u0441\u044b\u043b\u043e\u043a. \u041e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 nullable \u043e\u0431\u044a\u0435\u043a\u0442, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u044c, \u0445\u0440\u0430\u043d\u0438\u0442 \u043b\u0438 non-nullable \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043b\u0438 \u043d\u0435\u0442. <\/div>\n<\/div>\n<\/li>\n<li> Java 8: \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 capturing\/non-capturing lambda (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>capturing lambda \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435\/\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b\/\u043f\u043e\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0441\u043a\u043e\u0443\u043f\u0430<\/li>\n<li>non-capturing lambda \u2014 \u043d\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0441\u043a\u043e\u0443\u043f\u0430, \u043d\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u041d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Java 9 \u2014 11 (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u041d\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0432 String<\/li>\n<li>Java 9: \u041c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/li>\n<li>Java 9: \u041c\u0435\u0442\u043e\u0434\u044b \u0432 Objects: requireNonNullElse() \u0438 requireNonNullElseGet()<\/li>\n<li>Java 9: List.of(), Set.of(), Map.of(), Map.ofEntries()<\/li>\n<li>Java 9: Optional.ifPresentOrElse(), Optional.stream()<\/li>\n<li>Java 10: var type-inference<\/li>\n<li>Java 11: Files.readString(), Files.writeString()<\/li>\n<li>Java 11: Local-Variable Syntax for Lambda Parameters \u2014 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432 \u0443 var-\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043b\u044f\u043c\u0431\u0434\u0430-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445<\/li>\n<li>Java 11: JEP 321: HTTP Client<\/li>\n<\/ul>\n<p>  \u041c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u0431\u043e\u043d\u0443\u0441 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c:   <\/p>\n<ul>\n<li>JEP 328: Flight Recorder<\/li>\n<li>JEP 335: Deprecate the Nashorn JavaScript Engine<\/li>\n<li>JEP 320: Remove the Java EE and CORBA Modules<\/li>\n<\/ul>\n<p>   \u043d\u043e \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043b\u0438\u0448\u044c \u0432\u0430\u0448\u0443 \u0432\u044a\u0435\u0434\u043b\u0438\u0432\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 JDK&#8217;\u0448\u043d\u044b\u0445 Release Notes \ud83d\ude42<\/p><\/div>\n<\/div>\n<\/li>\n<li> Swing: \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e EDT, \u043a\u0430\u043a \u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f (**)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> <abbr title=\"Event Dispatch Thread\">EDT<\/abbr> \u2014 \u0442\u0440\u0435\u0434 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043d\u0430 UI: \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430, \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448, \u0441\u043a\u0440\u043e\u043b\u043b, drag&#8217;n&#8217;drop \u0438.\u0442.\u0434. \u0421\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u0441\u0435 \u00ab\u0442\u044f\u0436\u0435\u043b\u044b\u0435\u00bb \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 worker-\u0442\u0440\u0435\u0434 (<code>SwingUtils.invokeLater(...)<\/code>), \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0444\u0440\u0438\u0437\u0438\u0442\u044c EDT.<\/div>\n<\/div>\n<\/li>\n<li> Swing: \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u0438\u0434\u044b Layout, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u043d\u0430\u0435\u0442\u0435 (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.desktop\/java\/awt\/FlowLayout.html\" rel=\"nofollow\">FlowLayout<\/a><\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.desktop\/java\/awt\/GridLayout.html\" rel=\"nofollow\">GridLayout<\/a><\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.desktop\/javax\/swing\/BoxLayout.html\" rel=\"nofollow\">BoxLayout<\/a><\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.desktop\/java\/awt\/BorderLayout.html\" rel=\"nofollow\">BorderLayout<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> Generics: \u0412 \u0447\u0435\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 type-erasure? \u0412 \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 C++? (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u0422\u0438\u043f\u044b \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c, \u0442.\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432. \u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/li>\n<li>type-erasure \u2014 \u044d\u0442\u043e \u0441\u0442\u0438\u0440\u0430\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u0438\u043f\u0435-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 \u0432 runtime. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0435 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c List, Set \u0432\u043c\u0435\u0441\u0442\u043e List&lt;Integer&gt;, Set&lt;Integer&gt;, \u043d\u0443 \u0438 type-cast&#8217;\u044b \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438<\/li>\n<li>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u043e\u0432 \u0432 Java, \u0432 \u0421++ \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u043b\u0438 \u0442\u0438\u043f\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 (\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430). \u0414\u0430 \u043f\u0440\u043e\u0441\u0442\u044f\u0442 \u043c\u0435\u043d\u044f \u0437\u0434\u0435\u0441\u044c \u0430\u0434\u0435\u043f\u0442\u044b \u0421++.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> Generics: \u041c\u0435\u0442\u043e\u0434 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 List&lt;Parent&gt;. Child \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442 Parent. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0432 \u043c\u0435\u0442\u043e\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c List&lt;Child&gt;? (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u0412 \u0442\u0438\u043f\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c List&lt;? extends Parent&gt;   <\/div>\n<\/div>\n<\/li>\n<li> Generics: \u041a\u043e\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c\/\u043a\u043e\u043d\u0442\u0440\u0430\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c. \u0421\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0440\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f <abbr title=\"Producer Extends Consumer Super\">PECS<\/abbr> \u043a\u0430\u043a \u0431\u043e\u043d\u0443\u0441<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u041a\u043e\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u2014 List&lt;? extends T&gt;, \u0435\u0441\u043b\u0438 B extends T, \u0442\u043e \u0438 List&lt;B&gt; extends List&lt;T&gt;<\/li>\n<li>\u041a\u043e\u043d\u0442\u0440\u0430\u0432\u0430\u0440\u0438\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u2014 List&lt;? super T&gt;, \u0435\u0441\u043b\u0438 B super T, \u0442\u043e \u0438 List&lt;B&gt; super List&lt;T&gt;<\/li>\n<li><abbr title=\"Producer Extends Consumer Super\">PECS<\/abbr> \u2014 Producer-Extends-Consumer-Super, \u043c\u0435\u0442\u043e\u0434 \u043e\u0442\u0434\u0430\u0451\u0442 \u043a\u043e\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043d\u044b\u0439 \u0442\u0438\u043f, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043d\u044b\u0439 (\u043f\u0440\u0438\u043c. \u0430\u0432\u0442\u043e\u0440\u0430 \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e)<\/li>\n<\/ul>\n<p>   <\/div>\n<\/div>\n<\/li>\n<li> \u0420\u0435\u0433\u0438\u043e\u043d\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 JVM (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> Java 8: Metaspace, Old Generation, Young Generation (Eden Space\/Survivor Space), Stack, Constant Pool, Code Cache, GC Area.   <\/div>\n<\/div>\n<\/li>\n<li> Hard-references, weak references, soft-references, phantom-references (***) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>Hard-references \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f eligible for collection \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0437 root set<\/li>\n<li>Weak-references \u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0441\u043b\u0430\u0431\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f<\/li>\n<li>Soft-references \u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0443\u0434\u0430\u043b\u044f\u0442\u0441\u044f GC \u043f\u0440\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438<\/li>\n<li>Phantom-references \u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c, \u043f\u0435\u0440\u0435\u0434 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435. \u041d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0444\u0438\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0441\u044b\u043b\u043e\u043a (\u0432\u043c\u0435\u0441\u0442\u043e finalize)<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u0420\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e classloader&#8217;\u044b \u0438 \u0438\u0445 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e. \u0418\u0437 \u0437\u0430 \u0447\u0435\u0433\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c NoClassDefFoundError, NoSuchMethodError? (***) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u0418\u0435\u0440\u0430\u0440\u0445\u0438\u044f classloader&#8217;\u043e\u0432   <\/p>\n<ol>\n<li>Bootstrap<\/li>\n<li>System<\/li>\n<li>Application<\/li>\n<\/ol>\n<p>   <\/p>\n<ul>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/NoClassDefFoundError.html\" rel=\"nofollow\">NoClassDefFoundError<\/a> \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u044d\u0442\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u043d\u0435\u0442 \u0432 classpath<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/NoSuchMethodError.html\" rel=\"nofollow\">NoSuchMethodError<\/a> \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0438\u0437-\u0437\u0430 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u0430\u0448\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0435\u0441\u043b\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 A \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 B, \u043d\u043e \u0432 classpath \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 B, c \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430<\/li>\n<\/ul>\n<p>   <\/div>\n<\/div>\n<\/li>\n<li> \u041a\u0430\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 Java? (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u0427\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440<\/li>\n<li>\u0427\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 factory-method<\/li>\n<li>\u0427\u0435\u0440\u0435\u0437 \u043f\u0430\u0442\u0442\u0435\u0440\u043d Builder<\/li>\n<\/ul>\n<p>   <\/div>\n<\/div>\n<\/li>\n<li> \u041a\u0430\u043a \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 \u0432 Java? (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u041f\u043e \u0435\u0433\u043e <abbr title=\"Fully Qualified Domain Name\">FQDN<\/abbr> \u0438 classloader&#8217;\u0443   <\/div>\n<\/div>\n<\/li>\n<li> Bytecode: \u043d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u043e\u043f\u0438\u0448\u0438\u0442\u0435 \u0438\u0445 (**). <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u0417\u0434\u0435\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434:   <\/p>\n<ul>\n<li>aload<\/li>\n<li>aconst<\/li>\n<li>astore<\/li>\n<\/ul>\n<p>   * \u041f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u043a\u0430\u043a \u0431\u043e\u043d\u0443\u0441. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430.   <\/div>\n<\/div>\n<\/li>\n<li> Bytecode: invokevirtual, invokestatic, invokespecial \u2014 \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f?<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>invokevirtual \u2014 \u0432\u044b\u0437\u043e\u0432\u044b \u043c\u0435\u0442\u043e\u0434\u043e\u0432 (\u0432 Java \u0432\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435)<\/li>\n<li>invokestatic \u2014 \u0432\u044b\u0437\u043e\u0432\u044b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432<\/li>\n<li>invokespecial \u2014 \u0432\u044b\u0437\u043e\u0432\u044b \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432<\/li>\n<\/ul>\n<p>   <\/div>\n<\/div>\n<\/li>\n<\/ul>\n<h3>\u0421\u0435\u043a\u0446\u0438\u044f Concurrency:<\/h3>\n<p>  <\/p>\n<ul>\n<li> synchronized. wait\/notify\/notifyAll. \u041a\u0430\u043a \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u0430\u043d\u0430\u043b\u043e\u0433\u0438 \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 j.u.c? (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u0414\u0430\u043b\u044c\u0448\u0435 \u0442\u0435\u0437\u0438\u0441\u044b:   <\/p>\n<ul>\n<li>synchronized \u2014 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0435\u0435 \u0441\u043a\u043e\u0443\u043f \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438. \u041c\u043e\u0436\u043d\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430, \u0438\u043b\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0431\u043b\u043e\u043a\u0430 \u0432 \u043a\u043e\u0434\u0435.<\/li>\n<li>wait() \u2014 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u0434\u0430 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0431\u0443\u0436\u0435\u043d \u0434\u0440\u0443\u0433\u0438\u043c \u0442\u0440\u0435\u0434\u043e\u043c \u0447\u0435\u0440\u0435\u0437 notify\/notifyAll. <\/li>\n<li>\u0423 wait() \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0430\u043c\u0438. <\/li>\n<li>\u0422\u0440\u0435\u0434 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 wait-set \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0435<\/li>\n<li>\u041f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c wait() \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 (\u0447\u0435\u0440\u0435\u0437 synchronized)<\/li>\n<li>\u041c\u0430\u0433\u0438\u044f wait() \u2014 \u043e\u043d \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043b\u043e\u043a \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430, \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0440\u0435\u0434 \u043c\u043e\u0433 \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c notify\/notifyAll<\/li>\n<li>notify() \u2014 \u0431\u0443\u0434\u0438\u0442 <b>\u043e\u0434\u0438\u043d \u0438\u0437<\/b> \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445 \u0442\u0440\u0435\u0434\u043e\u0432, \u043d\u043e <b>\u0412\u0430\u0436\u043d\u043e!<\/b> \u2014 \u043b\u043e\u043a \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u043d\u0435 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u0435\u0442, \u0442.\u0435 \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0439 \u0442\u0440\u0435\u0434 \u0440\u0430\u0437\u0431\u0443\u0436\u0435\u043d \u0431\u0443\u0434\u0435\u0442, \u043d\u043e \u0441 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u043c \u0432\u0445\u043e\u0434\u0430 \u0432 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u0442.\u043a \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 synchronized). \u0422\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 notify \u0435\u0441\u0442\u044c \u0442\u044f\u0436\u0435\u043b\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u044d\u0442\u043e \u0437\u0430\u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442 \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0439 \u0442\u0440\u0435\u0434, \u0442.\u043a \u0442\u0440\u0435\u0434 \u0441 notify \u0435\u0449\u0435 \u043d\u0435 \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u043b \u043c\u043e\u043d\u0438\u0442\u043e\u0440<\/li>\n<li>notifyAll() \u2014 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0431\u0443\u0436\u0435\u043d\u044b \u0432\u0441\u0435 \u0442\u0440\u0435\u0434\u044b \u0432 wait-set, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0430\u043b\u0435\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u0434\u0430\u043c\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 contention (\u00ab\u0441\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u00bb) \u0437\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440<\/li>\n<li>\u0422\u0440\u0435\u0434 \u043d\u0430 wait() \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0431\u0443\u0436\u0435\u043d \u0442\u0430\u043a\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 interrupt, \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 spurious wake-up, \u0438\u043b\u0438 \u043f\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0443<\/li>\n<li>\u0422\u0430\u043a \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0442\u0440\u0435\u0434, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435 while, \u0430 \u043d\u0435 \u0432 if<\/li>\n<li>\u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432-\u0430\u043d\u0430\u043b\u043e\u0433 \u2014 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/locks\/Condition.html\" rel=\"nofollow\">Condition<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> volatile. happens-before. (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e volatile \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 happens-before \u043d\u0430\u0434 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u0438-\u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u043e\u043b\u0435<\/li>\n<li>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u0437 \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0445 \u0442\u0440\u0435\u0434\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0438\u0448\u0443\u0449\u0438\u0445 \u0442\u0440\u0435\u0434\u043e\u0432. <\/li>\n<li>\u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 double checked locking. \u0414\u043b\u044f double\/long \u0442\u0438\u043f\u043e\u0432 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u0438, \u043e\u043d\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u043e\u043c\u0438\u043a\u0438<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> AtomicInteger, AtomicLong, AtomicBoolean, AtomicDouble (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u0410\u0442\u043e\u043c\u0438\u043a\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 \u0431\u0435\u0437 \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u0433\u043e\u043d\u043e\u043a. <\/li>\n<li>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 10 \u0442\u0440\u0435\u0434\u043e\u0432 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u044f\u0442 AtomicInt = 0, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0440\u0435\u0434 \u0436\u0434\u0435\u0442 \u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 countdown-latch, \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0430\u0442\u043e\u043c\u0438\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c 10. <\/li>\n<li> \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0430\u0442\u043e\u043c\u0438\u043a\u043e\u0432 \u2014 \u0446\u0438\u043a\u043b cas (compare-and-set). \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 increment:<br \/> \n<ol>\n<li>\u0427\u0438\u0442\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/li>\n<li>\u041f\u0435\u0440\u0435\u0434 set&#8217;\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0442\u0430\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0441\u0435\u0442\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u043e\u0435 + 1<\/li>\n<li>\u0415\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0432 \u0441\u043b\u0435\u0434. \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u00ab\u043d\u043e\u0432\u043e\u0435\u00bb \u0441\u0442\u0430\u0440\u043e\u0435, \u0434\u0430\u043b\u0435\u0435 \u0441\u043c. \u043f. 1<\/li>\n<\/ol>\n<p>   <\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u0420\u0435\u0434\u043a\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u043a\u0430\u043a \u043f\u043e\u0439\u043c\u0430\u0442\u044c exception \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0442\u0440\u0435\u0434\u0430? (***) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/Thread.UncaughtExceptionHandler.html\" rel=\"nofollow\">Thread.UncaughExceptionHandler<\/a><\/div>\n<\/div>\n<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/locks\/ReentrantLock.html\" rel=\"nofollow\">ReentrantLock<\/a> (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438. \u0422\u0440\u0435\u0434, \u043f\u0435\u0440\u0435\u0434 \u0432\u0445\u043e\u0434\u043e\u043c \u0432 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u0445\u0432\u0430\u0442 c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 <code>lock()<\/code>, \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043a\u0440\u0438\u0442. \u0441\u0435\u043a\u0446\u0438\u0438 \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>unlock()<\/code>. \u0414\u0440\u0443\u0433\u043e\u0439 \u0442\u0440\u0435\u0434 \u0432 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430 lock&#8217;\u0435 (\u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f), \u043b\u0438\u0431\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>tryLock()<\/code>. <\/p>\n<p>   <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/locks\/ReentrantLock.html\" rel=\"nofollow\">ReentrantLock<\/a> \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0442\u044c (\u0442\u0430\u043a\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u0440\u0430\u0437, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043e\u043d \u0431\u044b\u043b \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d), \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 thread starvation \u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0440\u0435\u0434\u043e\u0432, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445 \u0443 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438.<br \/>   <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/locks\/ReentrantLock.html\" rel=\"nofollow\">ReentrantLock<\/a> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u00ab\u0447\u0435\u0441\u0442\u043d\u044b\u043c\u00bb (fairness = true), \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0442\u0434\u0430\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u0434\u0430\u043c, \u0436\u0434\u0443\u0449\u0438\u0445 \u043d\u0430 \u043d\u0435\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043a\u043e\u043b-\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u043e \u044d\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/p>\n<pre><code class=\"java\"> lock.lock();  \/\/ block until condition holds try { \t\/\/ ... method body } finally {  \tlock.unlock() } \t\t\t<\/code><\/pre>\n<\/div>\n<\/div>\n<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/CountDownLatch.html\" rel=\"nofollow\">Countdown Latch<\/a>\/<a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/CyclicBarrier.html\" rel=\"nofollow\">Cyclic Barrier<\/a> (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> CountdownLatch (\u00ab\u0437\u0430\u0449\u0435\u043b\u043a\u0430\u00bb) \u2014 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 thread \u043c\u043e\u0436\u0435\u0442 \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 N \u0442\u0440\u0435\u0434\u043e\u0432. \u0422\u0440\u0435\u0434\u044b, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0443, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 countDown() \u043d\u0430 \u0437\u0430\u0449\u0435\u043b\u043a\u0435, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0440\u0435\u0434 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 await(). \u041a\u043e\u0433\u0434\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043d\u0443\u043b\u044f, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0440\u0435\u0434 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>   \u0414\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 N \u0442\u0440\u0435\u0434\u043e\u0432 (\u0432\u0441\u0435 \u0436\u0434\u0443\u0442 \u0432\u0441\u0435\u0445) \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/CyclicBarrier.html\" rel=\"nofollow\">CyclicBarrier<\/a>, \u0435\u043c\u0443 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 (\u0447\u0435\u0440\u0435\u0437 Runnable), \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0435 \u043f\u043e\u0441\u043b\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0445-\u0441\u043e-\u0432\u0441\u0435\u043c\u0438<\/div>\n<\/div>\n<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/ThreadLocal.html\" rel=\"nofollow\">ThreadLocal<\/a> (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u041a\u043b\u0430\u0441\u0441, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c get\/set \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0440\u0435\u0434\u0430. \u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u0430\u043f\u044b \u0441\u043e \u0441\u043b\u0430\u0431\u044b\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043a\u043b\u044e\u0447\u0438-\u0442\u0440\u0435\u0434\u044b. \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0440\u0435\u0434 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0441\u0432\u043e\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c.<\/div>\n<\/div>\n<\/li>\n<li> \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 singleton? (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u041d\u0430\u0438\u0432\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043d\u0430 null \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u044f<\/li>\n<li><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81_%D0%B4%D0%B2%D0%BE%D0%B9%D0%BD%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%BE%D0%B9\" rel=\"nofollow\">Double checked locking<\/a> (\u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b double checked locking)<\/li>\n<li>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u2014 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 enum, \u0442.\u043a \u043b\u0435\u043d\u0438\u0432\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f thread-safe \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u0421\u043f\u043e\u0441\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043a? (***) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c Thread#run(), \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Thread#start()<\/li>\n<li>new Thread(Runnable).start()<\/li>\n<li>\u0427\u0435\u0440\u0435\u0437 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ExecutorService.html\" rel=\"nofollow\">ExecutorService<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f utility-\u043a\u043b\u0430\u0441\u0441 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/Executors.html\" rel=\"nofollow\">Executors<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ConcurrentHashMap.html\" rel=\"nofollow\">ConcurrentHashMap<\/a> (**)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ConcurrentHashMap.html\" rel=\"nofollow\">ConcurrentHashMap<\/a> \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 1.7 \u0438 1.8 (\u0447\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u044e). <br \/>   \u0420\u0430\u043d\u044c\u0448\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0438\u0434\u0435\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0445\u044d\u0448\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430. <br \/>   \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Java 8 \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0431\u0430\u043a\u0435\u0442\u043e\u0432 \u0441 lock-free (\u043b\u043e\u043a\u0438\u043d\u0433 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u043d\u043e\u0434\u0435 \u0431\u0430\u043a\u0435\u0442\u0430 \u0441 cas-\u0446\u0438\u043a\u043b\u043e\u043c) \u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u043c \u0440\u0435\u0441\u0430\u0439\u0437\u0438\u043d\u0433\u043e\u043c.<br \/>   <a href=\"https:\/\/habr.com\/ru\/post\/327186\/\">\u0427\u0430\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f ConcHashMap (\u0430\u043b\u044f Java 8) \u0441 \u043d\u0443\u043b\u044f<\/a> \u043e\u0442 <a href=\"https:\/\/habr.com\/ru\/users\/kuptservol\/\" class=\"user_link\">kuptservol<\/a><\/div>\n<\/div>\n<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ConcurrentSkipListMap.html\" rel=\"nofollow\">ConcurrentSkipListMap<\/a><br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> Lock-free \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0445\u0440\u0430\u043d\u044f\u0449\u0430\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0441 O(log N) \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f\/\u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 weakly-consistent \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438. \u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 SkipList, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0443\u044e \u0441\u043e\u0431\u043e\u0439 \u0441\u043b\u043e\u0438 \u0441\u0432\u044f\u0437\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u043e\u0442 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u043a \u043d\u0438\u0436\u043d\u0435\u043c\u0443, \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u043e\u0434 \u043d\u0438\u043c\u0438. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u0432 \u0441\u0430\u043c\u044b\u0439 \u043d\u0438\u0436\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u2014 1.0, \u0434\u0430\u043b\u0435\u0435 \u043e\u043d\u0430 \u0440\u0430\u0432\u043d\u044f\u0435\u0442\u0441\u044f p (\u043b\u0438\u0431\u043e 1\/2, \u043b\u0438\u0431\u043e 1\/4 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e) \u2014 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u0437 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0432 \u0432\u0435\u0440\u0445\u043d\u0438\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. Skiplist \u2014 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0438 \u0434\u043e\u0445\u043e\u0434\u0447\u0438\u0432\u043e \u043f\u0440\u043e skiplist \u043e\u043f\u0438\u0441\u0430\u043d\u043e <a href=\"https:\/\/habr.com\/ru\/post\/139870\/\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u043e\u043b\u0435\u0437\u043d\u0430, \u0435\u0441\u043b\u0438 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0442\u0440\u0435\u0434\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0440\u0435\u0437 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0443. \u0411\u043e\u043b\u0435\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ConcurrentHashMap.html\" rel=\"nofollow\">ConcurrentHashMap<\/a>   <\/div>\n<\/div>\n<\/li>\n<li> Thread states (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>NEW<\/li>\n<li>RUNNABLE<\/li>\n<li>BLOCKED(monitor lock)<\/li>\n<li>WAITING(Thread.join)<\/li>\n<li>TERMINATED<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> Deadlocks, \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043d\u0430\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c: (***)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u043d\u0430\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u2014 \u044d\u043a\u0441\u043a\u043b\u044e\u0437\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c, \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0446\u0438\u043a\u043b\u043e\u0432 \u0432 \u0433\u0440\u0430\u0444\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043e\u0442\u0441\u0443\u0441\u0442\u0432\u0438\u0435 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u0432 \u043d\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435<\/li>\n<li>\u041a\u0430\u043a \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u2014 \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c. \u0412\u0441\u0435\u0433\u0434\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043b\u0438\u0431\u043e Thread1-&gt;Thread2, \u043b\u0438\u0431\u043e Thread2-&gt;Thread1<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ThreadPoolExecutor.html\" rel=\"nofollow\">ThreadPoolExecutor<\/a> \u2014 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u0431\u043e\u0442\u044b, \u0441\u0432-\u0432\u0430, \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 (fixed threadpool, scheduled, single thread executor) (***)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ThreadPoolExecutor.html\" rel=\"nofollow\">ThreadPoolExecutor<\/a> \u2014 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0442\u0440\u0435\u0434\u043e\u0432 \u0432 \u043e\u0431\u0449\u0435\u043c \u043f\u0443\u043b\u0435, \u0438\u043b\u0438 \u0441\u0442\u0430\u0432\u0438\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0445 \u043d\u0435\u0442, \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f (\u043d\u0438\u0436\u0435)<\/p>\n<p>   \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0441\u0432-\u0432\u0430\u043c\u0438 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ThreadPoolExecutor.html\" rel=\"nofollow\">ThreadPoolExecutor<\/a> \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f <i>corePoolSize<\/i> \u0438 <i>maxPoolSize<\/i>. \u0415\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0435\u0434\u043e\u0432 \u0432 \u043f\u0443\u043b\u0435 &lt; <i>corePoolSize<\/i> \u2014 \u043d\u043e\u0432\u044b\u0439 \u0442\u0440\u0435\u0434 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432 \u043f\u0443\u043b\u0435 \u043d\u0435\u0437\u0430\u043d\u044f\u0442\u044b\u0435 \u0442\u0440\u0435\u0434\u044b. \u0412 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0435 \u043c\u0435\u0436\u0434\u0443 <i>corePoolSize<\/i> \u0438 <i>maxPoolSize<\/i> \u0442\u0440\u0435\u0434 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u0434\u0430\u0447, \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c\u0441\u044f \u0441\u043f\u0443\u0441\u0442\u044f <i>keepAliveTime<\/i>. \u0415\u0441\u043b\u0438 \u043a\u043e\u043b-\u0432\u043e \u0442\u0440\u0435\u0434\u043e\u0432 \u0441\u0442\u0430\u043b\u043e &gt;= <i>maxPoolSize<\/i> \u2014 \u043d\u043e\u0432\u044b\u0435 \u0442\u0440\u0435\u0434\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f, \u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c. <\/p>\n<p>   \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438:   <\/p>\n<ul>\n<li>Direct handoffs: \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0440\u0435\u0434\u043f\u0443\u043b\u0443. \u041d\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u0434\u0430\u0447\u0438. \u0415\u0441\u043b\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0442\u0440\u0435\u0434\u043e\u0432 \u043d\u0435\u0442 \u2014 \u043a\u0438\u0434\u0430\u0435\u0442\u0441\u044f exception. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043f\u0440\u0438 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0445 maxPoolSize, \u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u0440\u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u044f\u0445 \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445 \u0447\u0442\u0435\u043d\u0438\u044f\u0445, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u043c\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432<\/li>\n<li>Unbounded queues: \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u0417\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043d\u0435\u0435 \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 corePoolSize, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c <i>maxPoolSize<\/i> \u0431\u0443\u0434\u0435\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. Unbounded queues \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u0445, \u043d\u043e \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u044e\u0442 \u0440\u043e\u0441\u0442 \u0442\u0440\u0435\u0434\u043e\u0432 \u043f\u0440\u0438 \u043f\u0438\u043a\u0430\u0445.<\/li>\n<li>Bounded queues: \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u0417\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043e \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0435\u0433\u043e capacity. \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b <i>corePoolSize<\/i> \u0438 \u0441\u0430\u043c\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0438 \u0447\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u2014 \u043f\u0435\u0440\u0444\u043e\u043c\u0430\u043d\u0441\u043e\u043c (\u043c\u0430\u043b\u044b\u0439 <i>corePoolSize<\/i> \u0438 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c), \u0438\u043b\u0438 \u0436\u0435 \u043f\u0430\u043c\u044f\u0442\u044c\u044e (\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0431\u043e\u043b\u044c\u0448\u043e\u0439 corePoolSize) <\/li>\n<\/ul>\n<p>   \u0427\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ThreadPoolExecutor.html\" rel=\"nofollow\">ThreadPoolExecutor<\/a>:   <\/p>\n<ul>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ScheduledThreadPoolExecutor.html\" rel=\"nofollow\">ScheduleThreadPoolExecutor<\/a> \u2014 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u044b\u0445 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447<\/li>\n<li>fixed thread pool \u2014 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u044c <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/ThreadPoolExecutor.html\" rel=\"nofollow\">ScheduleThreadPoolExecutor&#8217;\u0430<\/a> \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c <i>corePoolSize<\/i> \u0438 unbounded queue<\/li>\n<li>single thread executor \u2014 \u0442\u0440\u0435\u0434\u043f\u0443\u043b\u043b, c <i>\u0441orePoolSize<\/i> = 1, \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438<\/li>\n<\/ul>\n<p>   <\/div>\n<\/div>\n<p>   <\/li>\n<\/ul>\n<h3>\u0421\u0435\u043a\u0446\u0438\u044f Collections:<\/h3>\n<p>  <\/p>\n<ul>\n<li> \u0420\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e java.util.collection. (*) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/Iterable.html\" rel=\"nofollow\">Iterable<\/a> \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Collection.html\" rel=\"nofollow\">\u0421ollection<\/a> \u2014 \u043e\u0431\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/List.html\" rel=\"nofollow\">List<\/a> (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/ArrayList.html\" rel=\"nofollow\">ArrayList<\/a>) \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u0437\u0430 O(1), \u0432\u0441\u0442\u0430\u0432\u043a\u043e\u0439\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e O(n)<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Set.html\" rel=\"nofollow\">Set<\/a> (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/HashSet.html\" rel=\"nofollow\">HashSet<\/a>) \u2014 \u043c\u043d-\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0435\u0437 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0432. \u041d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443, \u0435\u0441\u0442\u044c \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0437\u0430 O(1)<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Map.html\" rel=\"nofollow\">Map<\/a> (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/HashMap.html\" rel=\"nofollow\">HashMap<\/a>) \u2014 \u043c\u043d-\u0432\u043e \u043f\u0430\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u00ab\u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb. \u0414\u043e\u0441\u0442\u0443\u043f \u043f\u043e \u043a\u043b\u044e\u0447\u0443\/\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0437\u0430 O(1) \u043f\u0440\u0438 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, O(n) \u2014 \u043f\u0440\u0438 \u0432\u044b\u0440\u043e\u0436\u0434\u0435\u043d\u043d\u043e\u043c<\/li>\n<\/ul>\n<p>  \u041e\u0431\u0437\u043e\u0440 \u043f\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c \u043e\u0442 <a href=\"https:\/\/www.journaldev.com\/1260\/collections-in-java-tutorial\" rel=\"nofollow\">JournalDev<\/a><\/div>\n<\/div>\n<\/li>\n<li> \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/ArrayList.html\" rel=\"nofollow\">ArrayList<\/a>, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/LinkedList.html\" rel=\"nofollow\">LinkedList<\/a>, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/HashMap.html\" rel=\"nofollow\">HashMap<\/a>, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/HashSet.html\" rel=\"nofollow\">HashSet<\/a>. \u041a\u043e\u0433\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 equals\/hashcode \u0434\u043b\u044f Map, Set (*) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u041e\u0431\u0437\u043e\u0440 \u043f\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c \u043e\u0442 <a href=\"https:\/\/www.journaldev.com\/1260\/collections-in-java-tutorial\" rel=\"nofollow\">JournalDev<\/a><\/div>\n<\/div>\n<\/li>\n<li> \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0435\u0433\u043e \u0441\u0432-\u0432\u0430 \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (*)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u041c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0414\u043b\u044f \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0434\u0432\u0443\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0435\u0441\u0442\u044c <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/ListIterator.html\" rel=\"nofollow\">ListIterator<\/a><\/li>\n<li>\u0415\u0441\u043b\u0438 \u0432 foreach \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u043f\u0440\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 (\u043d\u0435\u044f\u0432\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440) \u043f\u043e\u043b\u0443\u0447\u0438\u043c <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/ConcurrentModificationException.html\" rel=\"nofollow\">ConcurrentModificationException<\/a> (fail-fast)<\/li>\n<li>hasNext(), next() \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Hashtable.html\" rel=\"nofollow\">Hashtable<\/a> vs <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/HashMap.html\" rel=\"nofollow\">HashMap<\/a> (*)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Hashtable.html\" rel=\"nofollow\">Hashtable<\/a> \u2014 legacy, thread safe, \u043c\u0435\u0442\u043e\u0434\u044b \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 Hashtable (\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435) \u0432 \u0446\u0435\u043b\u043e\u043c \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u0435\u0435<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/HashMap.html\" rel=\"nofollow\">HashMap<\/a> \u2014 \u043d\u0435 thread-safe<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> Java 8,11: \u043d\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0432 Map (**) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>Java 8: compute<\/li>\n<li>Java 8: computeIfAbsent<\/li>\n<li>Java 8: computeIfPresent<\/li>\n<li>Java 8: forEach<\/li>\n<li>Java 8: putIfAbsent<\/li>\n<li>Java 11: factory-\u043c\u0435\u0442\u043e\u0434\u044b of()<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/LinkedHashMap.html\" rel=\"nofollow\">LinkedHashMap<\/a>, \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d (**)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0430\u0440 key-value \u0432 Map<\/li>\n<li>\u041a\u0430\u0436\u0434\u044b\u0439 entry \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043c\u0438\u043c\u043e hash, value, next (\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0431\u0430\u043a\u0435\u0442\u0435) \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u044f, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0432\u0441\u0442\u0430\u0432\u043a\u0438<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/TreeMap.html\" rel=\"nofollow\">TreeMap<\/a> (**)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>C\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043a\u0440\u0430\u0441\u043d\u043e-\u0447\u0435\u0440\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e<\/li>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/NavigableMap.html\" rel=\"nofollow\">NavigableMap<\/a>, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0437 \u043d\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0431\u043e\u043b\u044c\u0448\u0435 (\u043c\u0435\u043d\u044c\u0448\u0435) \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e, \u043b\u0438\u0431\u043e range \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0445<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> \u041a\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Comparator.html\" rel=\"nofollow\">Comparator<\/a> \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c? <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u0411\u044b\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441 equals()<\/div>\n<\/div>\n<\/li>\n<li> \u0415\u0441\u0442\u044c \u043b\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0434\u0435\u043b\u0430\u0442\u044c enum \u043a\u043b\u044e\u0447\u043e\u043c Map? (**)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/EnumMap.html\" rel=\"nofollow\">EnumMap<\/a> \u2014 \u043c\u0430\u0441\u0441\u0438\u0432, \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043b-\u0432\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 enum&#8217;\u0435. \u0418\u043d\u0434\u0435\u043a\u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0443\u044e\u0442 ordinal&#8217;\u0443 \u0438\u0437 enum&#8217;\u0430<\/div>\n<\/div>\n<\/li>\n<li> \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0440\u043e <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/CopyOnWriteArrayList.html\" rel=\"nofollow\">CopyOnWriteArrayList\/CopyOnWriteHashSet<\/a> (**)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/CopyOnWriteArrayList.html\" rel=\"nofollow\">\u0421opyOnWriteArrayList<\/a> \u2014 \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 list, \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438\/\u0430\u043f\u0434\u0435\u0439\u0442\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 <\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/concurrent\/CopyOnWriteHashSet.html\" rel=\"nofollow\">\u0421opyOnWriteHashSet<\/a> \u2014 \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 set, \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438\/\u0430\u043f\u0434\u0435\u0439\u0442\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e set&#8217;\u0430 <\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<li> <a href=\"https:\/\/docs.oracle.com\/javase\/7\/docs\/api\/java\/util\/IdentityHashMap.html\" rel=\"nofollow\">IdentityHashMap<\/a> \u2014 \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f? (**)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> <a href=\"https:\/\/docs.oracle.com\/javase\/7\/docs\/api\/java\/util\/IdentityHashMap.html\" rel=\"nofollow\">IdentityHashMap<\/a> \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0443\u0445 \u0441\u0441\u044b\u043b\u043e\u043a, \u0430 \u043d\u0435 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0443\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e \u043d\u0438\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u043f\u043e\u0441\u0435\u0448\u0435\u043d\u043d\u044b\u0435 \u043d\u043e\u0434\u044b \u0432 \u0433\u0440\u0430\u0444\u0435, \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u044b-\u043f\u0440\u043e\u043a\u0441\u0438. IdentityHashMap \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043d\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0445\u044d\u0448\u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438, \u044d\u0442\u043e linear probing map (\u0431\u043e\u043d\u0443\u0441 \u0437\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b linear probing)<\/div>\n<\/div>\n<\/li>\n<li> \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Queue.html\" rel=\"nofollow\">Queue<\/a>\/<a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Deque.html\" rel=\"nofollow\">Deque<\/a> \u0438 \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (***)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Queue.html\" rel=\"nofollow\">Queue<\/a> \u2014 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 FIFO. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u043d\u0430\u0431\u043e\u0440\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f\/\u0432\u0437\u044f\u0442\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441 \u043a\u043e\u043d\u0446\u0430 \u2014 \u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u0441\u043f\u0435\u0446. \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 (\u043f\u0443\u0441\u0442\u0430\u044f \u0438\u043b\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c), \u0438 \u0441 \u043a\u0438\u0434\u0430\u043d\u0438\u0435\u043c exception&#8217;\u0430<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Deque.html\" rel=\"nofollow\">Deque<\/a> \u2014 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u0432 \u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c FIFO\/LIFO. \u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u044d\u043a\u0430 \u0432\u043c\u0435\u0441\u0442\u043e <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/util\/Stack.html\" rel=\"nofollow\">Stack<\/a>. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0434\u043b\u044f Deque:<br \/>   <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/v6\/ef\/wc\/v6efwcg7oxhtxs1hl7fbfuzau4e.png\">   <\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/concurrent\/BlockingQueue.html\" rel=\"nofollow\">BlockingQueue<\/a> \u2014 \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f take \u043f\u0440\u0438 \u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0438\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 put \u043f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0415\u0441\u0442\u044c \u043d\u0430\u0431\u043e\u0440\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438 \u0441 \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439. \u041d\u0438\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0438.<br \/>   <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/x4\/cx\/mp\/x4cxmp32uayfxwsnm0coqqpyr9k.png\"><\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/concurrent\/ArrayBlockingQueue.html\" rel=\"nofollow\">ArrayBlockingQueue<\/a> \u2014 \u043a\u043e\u043b\u044c\u0446\u0435\u0432\u043e\u0439 bounded-buffer \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c capacity \u0438 fairness policy. \u0412\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c lock&#8217;\u043e\u043c (<i>j.u.c.l.ReentrantLock<\/i>), \u043d\u0435\u044f\u0432\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u0441 \u0434\u0432\u0443\u043c\u044f condition&#8217;\u0430\u043c\u0438 \u2014 notFull, notEmpty. \u0421\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043f\u0438\u0448\u0443\u0449\u0438\u0439 \u0442\u0440\u0435\u0434, \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0432\u0448\u0438\u0439 \u043e\u0431\u0449\u0438\u0439 lock, \u0437\u0430\u0441\u0442\u0440\u044f\u043b \u043d\u0430 condition&#8217;\u0435 notFull, \u043e\u043d \u043d\u0435\u044f\u0432\u043d\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 lock, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0439 \u0442\u0440\u0435\u0434 \u043c\u043e\u0433 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c producer&#8217;\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c. \u0420\u043e\u0432\u043d\u043e \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0439 \u0442\u0440\u0435\u0434 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0449\u0438\u0439 lock, \u0437\u0430\u0441\u0442\u0440\u0435\u0432\u0430\u0435\u0442 \u043d\u0430 notEmpty, \u043d\u0435\u044f\u0432\u043d\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 lock, \u0447\u0442\u043e\u0431\u044b \u043f\u0438\u0448\u0443\u0449\u0438\u0439 \u0442\u0440\u0435\u0434 \u043c\u043e\u0433 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438 \u043f\u0440\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0442\u044c \u043e \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0422.\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u0442\u0430\u043a\u0430\u044f \u0436\u0435, \u043a\u0430\u043a \u0438 \u0443 synchronized\/wait\/notify\/notifyAll. Fairness = true \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 thread starvation \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u044c\u044e\u043c\u0435\u0440\u043e\u0432 \u0438 \u043f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u043e\u0432, \u043d\u043e \u0441\u043d\u0438\u0437\u0438\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/concurrent\/LinkedBlockingQueue.html\" rel=\"nofollow\">LinkedBlockingQueue<\/a> \u2014 \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 two-lock queue, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms by Maged M. Michael and Michael L. Scott.<\/li>\n<\/ul>\n<p>   <\/div>\n<\/div>\n<p>   <\/li>\n<\/ul>\n<h3>\u0421\u0435\u043a\u0446\u0438\u044f IO:<\/h3>\n<p>  <\/p>\n<ul>\n<li> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/io\/InputStream.html\" rel=\"nofollow\">InputStream<\/a>, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/io\/OutputStream.html\" rel=\"nofollow\">OutputStream<\/a> \u0438 \u0438\u0445 buffered \u0432\u0435\u0440\u0441\u0438\u0438 (*)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u0414\u0430\u043b\u0435\u0435, \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 <i>InputStream<\/i> \u2014 is, <i>OutputStream<\/i> \u2014 os<br \/>   is \u2014 \u043f\u043e\u0431\u0430\u0439\u0442\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u043e\u043a\u0435\u0442\u0430\/\u0444\u0430\u0439\u043b\u0430\/\u0441\u0442\u0440\u043e\u043a\u0438\/\u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430<br \/>   os \u2014 \u043f\u043e\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0441\u043e\u043a\u0435\u0442\/\u0444\u0430\u0439\u043b\/\u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432<br \/>   Buffered-\u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u0443\u0444\u0444\u0435\u0440<\/div>\n<\/div>\n<\/li>\n<li> \u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/io\/Reader.html\" rel=\"nofollow\">Reader<\/a>? (*) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> Reader \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/nio\/charset\/Charset.html\" rel=\"nofollow\">Charset<\/a> \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438<\/div>\n<\/div>\n<\/li>\n<li> <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/io\/Serializable.html\" rel=\"nofollow\">Serializable<\/a>, serialVersionUID (*)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> \u041a\u043b\u0430\u0441\u0441\u044b, \u0447\u044c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u044e\u0442\u0441\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\/\u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c marker \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Serializable (\u0438 \u0438\u043c\u0435\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0435 serialVersionUID \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0438 \u043f\u0440\u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0441 \u043a\u0430\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043a\u043b\u0430\u0441\u0441\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u044b\u043b \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d. \u0415\u0441\u043b\u0438 serialVersionUID \u0438\u0437 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 c serialVersionUID \u043a\u043b\u0430\u0441\u0441\u0430 \u00ab\u043d\u0430 \u0442\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0430\u00bb \u2014 \u0442\u043e \u043a\u0438\u0434\u0430\u0435\u0442\u0441\u044f exception)<\/p>\n<p>   \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0443\u0436\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0442.\u043a \u0442\u0435\u043c \u0436\u0435 Jackson\/GSON \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/p><\/div>\n<\/div>\n<\/li>\n<li> try-with-resources. <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/lang\/AutoCloseable.html\" rel=\"nofollow\">AutoCloseable<\/a> (*)<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\"> try-with-resources \u2014 \u043a\u0440\u0430\u0442\u043a\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c\u0443 try..catch..finally. \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u0441\u0435\u043a\u0446\u0438\u0438 try-with-resources. \u0420\u0435\u0441\u0443\u0440\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 AutoCloseable.<\/p>\n<p>   \u00ab\u0420\u0435\u0441\u0443\u0440\u0441\u00bb \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u2014 \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0441, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 c\u043e\u0431\u043e\u0439 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\/c\u043e\u043a\u0435\u0442\/\u0444\u0430\u0439\u043b\/\u043f\u043e\u0442\u043e\u043a   <\/p>\n<pre><code class=\"java\"> try (InputStream is = new FileInputStream(&quot;\/path\/to\/file.txt&quot;)) { \t... } \t\t\t<\/code><\/pre>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<h3>\u0421\u0435\u043a\u0446\u0438\u044f Exceptions:<\/h3>\n<p>  <\/p>\n<ul>\n<li> \u041e\u0442\u043b\u0438\u0447\u0438\u0435 checked-exception\/unchecked-exception. Error, Exception, RuntimeException (*) <br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>Checked exceptions (\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f). \u0412 JDK \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u043c Exception. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0438\u0445 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u043b\u0438\u0431\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0435 \u043c\u0435\u0442\u043e\u0434\u0430, \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u044b\u0448\u0435. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0434\u0443\u0440\u043d\u044b\u043c \u0442\u043e\u043d\u043e\u043c, \u0442.\u043a \u043a\u043e\u0434 \u0441\u043e \u043c\u043d-\u0432\u043e\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 try..catch \u043f\u043b\u043e\u0445\u043e \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u0435\u043d, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0432 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. <\/li>\n<li>Unchecked exceptions (\u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f). \u0412 JDK \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0441 RuntimeException. \u041c\u043e\u0436\u043d\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 try..catch, \u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 throws. \u041c\u0438\u043d\u0443\u0441 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u2014 \u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u00ab\u0440\u0432\u0430\u043d\u0435\u0442\u00bb<\/li>\n<li>Error \u2014 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u0438\u0434\u0430\u0435\u043c\u044b\u0435 JVM \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 (OutOfMemoryError), \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u044d\u043a\u0430 (StackOverflowError) \u0438.\u0442.\u0434<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<p>  \u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438:  <\/p>\n<ol>\n<li><a href=\"https:\/\/www.toptal.com\/java\/hunting-memory-leaks-in-java\" rel=\"nofollow\">\u0423\u0442\u0435\u0447\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438<\/a> \u2014 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 TopTal.com<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/327186\/\">\u0427\u0430\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f ConcHashMap <\/a> (\u0430\u043b\u044f Java 8) \u0441 \u043d\u0443\u043b\u044f \u043e\u0442 <a href=\"https:\/\/habr.com\/ru\/users\/kuptservol\/\" class=\"user_link\">kuptservol<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/139870\/\">\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 SkipList<\/a><\/li>\n<li><a href=\"https:\/\/www.journaldev.com\/1260\/collections-in-java-tutorial\" rel=\"nofollow\">\u041e\u0431\u0437\u043e\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439<\/a> \u043e\u0442 JournalDev<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/luxoft\/blog\/256877\/\">\u041e\u0431\u0437\u043e\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439<\/a> \u043e\u0442 <a href=\"https:\/\/habr.com\/ru\/users\/vedenin1980\/\" class=\"user_link\">vedenin1980<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/luxoft\/blog\/157273\/\">\u041e\u0431\u0437\u043e\u0440<\/a> \u043f\u0430\u043a\u0435\u0442\u0430 java.util.concurrency (Java 7) \u043e\u0442 <a href=\"https:\/\/habr.com\/ru\/users\/melnosta\/\" class=\"user_link\">Melnosta<\/a><\/li>\n<li>Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms by Maged M. Michael and Michael L. Scott (\u0434\u043b\u044f \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0434\u0443\u0445\u043e\u043c)<\/li>\n<\/ol>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/485678\/\"> https:\/\/habr.com\/ru\/post\/485678\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/485678\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gj\/ko\/2r\/gjko2rfc3vgv4xcwlactd49illu.jpeg\" alt=\"image\"><\/p>\n<p>  \u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c! \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e Java Backend, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u043b \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u043e\u043a\u043e\u043b\u043e 2\u0445 \u043b\u0435\u0442. <\/p>\n<p>  \u0412\u043e\u043f\u0440\u043e\u0441\u044b \u0440\u0430\u0437\u0431\u0438\u0442\u044b \u043f\u043e \u0442\u0435\u043c\u0430\u043c: <b>core<\/b>, <b>collections<\/b>, <b>concurrency<\/b>, <b>io<\/b>, <b>exceptions<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0445\u043e\u0434\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0417\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0430\u043c\u0438 \u043e\u0442\u043c\u0435\u0447\u0435\u043d \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 (\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u0430) \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430, \u0432 \u0441\u043d\u043e\u0441\u043a\u0435 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u0430 \u2014 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441. \u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e\u0432\u0435\u0440\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043c\u044b\u0441\u043b\u0438 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-299878","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/299878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=299878"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/299878\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=299878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=299878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=299878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}