-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
85 lines (67 loc) · 2.53 KB
/
Solution.java
File metadata and controls
85 lines (67 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//If any man defiles the temple of God, him shall God destroy; for the temple of God is holy, which temple you are. (John 3:17)
package com.javarush.task.task26.task2608;
/*
Мудрый человек думает раз, прежде чем два раза сказать
*/
public class Solution {
int var1;
int var2;
int var3;
int var4;
private final Object o = new Object();
private final Object p = new Object();
public Solution(int var1, int var2, int var3, int var4) {
this.var1 = var1;
this.var2 = var2;
this.var3 = var3;
this.var4 = var4;
}
public int getSumOfVar1AndVar2() {
synchronized(o) {
return var1 + var2;
}
}
public int getSumOfVar3AndVar4() {
synchronized(p) {
return var3 + var4;
}
}
public static void main(String[] args) {
}
}
/*
Мудрый человек думает раз, прежде чем два раза сказать
Все методы, кроме метода main, класса Solution должны быть thread safe.
Сделайте так, чтобы оба метода могли выполняться одновременно двумя различными тредами.
synchronized(this) для этого не подходит, используй другой объект для лока.
Требования:
1. Класс Solution должен содержать метод getSumOfVar1AndVar2().
2. Класс Solution должен содержать метод getSumOfVar3AndVar4().
3. Метод getSumOfVar1AndVar2() должен содержать synchronized блок.
4. Метод getSumOfVar3AndVar4() должен содержать synchronized блок.
5. Synchronized блоки методов getSumOfVar1AndVar2() и getSumOfVar3AndVar4() должны использовать мьютексы разных объектов.
package com.javarush.task.task26.task2608;
*
Мудрый человек думает раз, прежде чем два раза сказать
*
public class Solution {
int var1;
int var2;
int var3;
int var4;
public Solution(int var1, int var2, int var3, int var4) {
this.var1 = var1;
this.var2 = var2;
this.var3 = var3;
this.var4 = var4;
}
public int getSumOfVar1AndVar2() {
return var1 + var2;
}
public int getSumOfVar3AndVar4() {
return var3 + var4;
}
public static void main(String[] args) {
}
}
*/