Skip to content

Commit 8cc8a01

Browse files
author
eugene.kalashnikov
committed
java.util.concurrent + рефакторинг
1 parent 5e16776 commit 8cc8a01

11 files changed

Lines changed: 218 additions & 0 deletions

File tree

concurrency.md

Lines changed: 195 additions & 0 deletions
Large diffs are not rendered by default.

core.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@
117117
+ [Предположим, есть метод, который может выбросить `IOException` и `FileNotFoundException` в какой последовательности должны идти блоки `catch`? Сколько блоков `catch` будет выполнено?](#Предположим-есть-метод-который-может-выбросить-ioexception-и-filenotfoundexception-в-какой-последовательности-должны-идти-блоки-catch-Сколько-блоков-catch-будет-выполнено)
118118
+ [Что если исключение появится в try блоке и в finally](#Что-если-исключение-появится-в-try-блоке-и-в-finally)
119119
+ [Подавленные исключения](#Подавленные-исключения)
120+
+ [Как создать аннотацию?](#Как-создать-аннотацию)
120121
+ [Что такое _generics_?](#Что-такое-generics)
121122
+ [Ковариантность, контравариантность и инвариантность](#Ковариантность-контравариантность-и-инвариантность)
122123
+ [Wildcards](#Wildcards)
@@ -1524,6 +1525,26 @@ public class Example implements AutoCloseable{
15241525
```
15251526
Даже, если в методе close() будет сгенерировано исключение и оно добавится к подавленным исключения для блока try, все они заменятся исключением, которое будет сгенерировано блоком finally.
15261527

1528+
## Как создать аннотацию?
1529+
Как видно из примера выше, аннотация определяется описанием с ключевым словом interface и может включать в себя несколько полей, которые можно задать как обязательными, так и не обязательными. В последнем случае подставляется default значение поля.
1530+
1531+
Аннотация @Target указывает, что именно мы можем пометить этой аннотацией, это может быть поле, метод, тип и т.д.
1532+
1533+
Аннотация @Retention позволяет указать жизненный цикл аннотации: будет она присутствовать только в исходном коде, в скомпилированном файле, или она будет также видна и в процессе выполнения. Выбор нужного типа зависит от того, как вы хотите использовать аннотацию, например, генерировать что-то побочное из исходных кодов, или в процессе выполнения стучаться к классу через reflection.
1534+
1535+
Аннотация @Inherited помечает аннотацию, которая будет унаследована потомком класса, отмеченного такой аннотацией.
1536+
1537+
```java
1538+
import java.lang.annotation.*;
1539+
@Target(value=ElementType.FIELD)
1540+
@Retention(value= RetentionPolicy.RUNTIME)
1541+
public @interface Name {
1542+
String name();
1543+
String type() default “string”;
1544+
}
1545+
```
1546+
[к оглавлению](#java-core)
1547+
15271548
## Что такое _generics_?
15281549
__Generics__ - это технический термин, обозначающий набор свойств языка позволяющих определять и использовать обобщенные типы и методы. Обобщенные типы или методы отличаются от обычных тем, что имеют типизированные параметры.
15291550

img/Conc3.png

140 KB
Loading

img/Conc4.png

162 KB
Loading

img/Conc5.png

164 KB
Loading

img/Conc6.png

37 KB
Loading

img/Conc7.png

22.4 KB
Loading

img/Conc8.png

34 KB
Loading

img/Conc9.png

24.2 KB
Loading

img/Concurrency2.png

9.58 KB
Loading

0 commit comments

Comments
 (0)