Skip to content

Commit a767650

Browse files
authored
I will pray to the Father for you
In that day you will ask in my name; and I don't say to you, that I will pray to the Father for you (John 16:26)
1 parent 52b6c03 commit a767650

1 file changed

Lines changed: 104 additions & 0 deletions

File tree

task17/task1703/Solution.java

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
2+
//In that day you will ask in my name; and I don't say to you, that I will pray to the Father for you (John 16:26)
3+
4+
package com.javarush.task.task17.task1703;
5+
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
9+
/*
10+
Синхронизированные заметки
11+
*/
12+
13+
public class Solution {
14+
15+
public static void main(String[] args) {
16+
17+
}
18+
19+
public static class Note {
20+
21+
public final List<String> notes = new ArrayList<String>();
22+
23+
public void addNote(int index, String note) {
24+
25+
System.out.println("Сейчас будет добавлена заметка [" + note + "] На позицию " + index);
26+
synchronized(notes) {
27+
notes.add(index, note);
28+
}
29+
System.out.println("Уже добавлена заметка [" + note + "]");
30+
31+
}
32+
33+
public void removeNote(int index) {
34+
35+
System.out.println("Сейчас будет удалена заметка с позиции " + index);
36+
37+
String note;
38+
synchronized(notes) {
39+
note = notes.remove(index);
40+
}
41+
System.out.println("Уже удалена заметка [" + note + "] с позиции " + index);
42+
43+
}
44+
}
45+
46+
}
47+
48+
49+
50+
51+
/*
52+
Синхронизированные заметки
53+
1. Класс Note будет использоваться нитями. Поэтому сделай так, чтобы обращения к листу notes блокировали мьютекс notes, не this
54+
2. Все System.out.println не должны быть заблокированы (синхронизированы), т.е. не должны находиться в блоке synchronized
55+
56+
57+
Требования:
58+
1. Метод addNote() должен добавлять записки в список notes.
59+
2. Метод removeNote() должен удалять записку из списка notes.
60+
3. В методе addNote() должен находиться synchronized блок.
61+
4. В методе removeNote() должен находиться synchronized блок.
62+
5. Synchronized блок в методе addNote() должен блокировать мьютекс notes.
63+
6. Synchronized блок в методе removeNote() должен блокировать мьютекс notes.
64+
7. В synchronized блоке метода addNote() должен находится вызов метода add у notes.
65+
8. В synchronized блоке метода removeNote() должен находится вызов метода remove у notes.
66+
9. Все команды вывода на экран не должны находиться в блоке synchronized.
67+
68+
69+
package com.javarush.task.task17.task1703;
70+
71+
import java.util.ArrayList;
72+
import java.util.List;
73+
74+
*
75+
Синхронизированные заметки
76+
*
77+
78+
public class Solution {
79+
80+
public static void main(String[] args) {
81+
82+
}
83+
84+
public static class Note {
85+
86+
public final List<String> notes = new ArrayList<String>();
87+
88+
public void addNote(int index, String note) {
89+
System.out.println("Сейчас будет добавлена заметка [" + note + "] На позицию " + index);
90+
notes.add(index, note);
91+
System.out.println("Уже добавлена заметка [" + note + "]");
92+
}
93+
94+
public void removeNote(int index) {
95+
System.out.println("Сейчас будет удалена заметка с позиции " + index);
96+
String note = notes.remove(index);
97+
System.out.println("Уже удалена заметка [" + note + "] с позиции " + index);
98+
}
99+
}
100+
101+
}
102+
103+
104+
*/

0 commit comments

Comments
 (0)