-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
122 lines (88 loc) · 3.33 KB
/
Solution.java
File metadata and controls
122 lines (88 loc) · 3.33 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
//Behold, the time is coming, yes, and has now come, that you will be scattered,
//everyone to his own place, and you will leave me alone. Yet I am not alone, because the Father is with me. (John 16:32)
package com.javarush.task.task17.task1709;
/*
Предложения
*/
public class Solution {
public volatile static int proposal = 0;
public static void main(String[] args) {
new AcceptProposal().start();
new MakeProposal().start();
}
public static class MakeProposal extends Thread {
@Override
public void run() {
int thisProposal = proposal;
while (proposal < 10) {
System.out.println("Сделано предложение №" + (thisProposal + 1));
proposal = ++thisProposal;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static class AcceptProposal extends Thread {
@Override
public void run() {
int thisProposal = proposal;
while (thisProposal < 10) {
if (thisProposal != proposal) {
System.out.println("Принято предложение №" + proposal);
thisProposal = proposal;
}
}
}
}
}
/*
Предложения
Не используя synchronized сделай так, чтобы количество сделанных и принятых предложений было одинаковым.
Требования:
1. Класс Solution должен содержать нить MakeProposal.
2. Класс Solution должен содержать нить AcceptProposal.
3. Класс Solution должен содержать публичную статическую переменную int proposal.
4. Программа не должна содержать synchronized методов или synchronized блоков.
5. Переменная int proposal не должна находится в локальном кэше.
package com.javarush.task.task17.task1709;
*
Предложения
*
public class Solution {
public static int proposal = 0;
public static void main(String[] args) {
new AcceptProposal().start();
new MakeProposal().start();
}
public static class MakeProposal extends Thread {
@Override
public void run() {
int thisProposal = proposal;
while (proposal < 10) {
System.out.println("Сделано предложение №" + (thisProposal + 1));
proposal = ++thisProposal;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static class AcceptProposal extends Thread {
@Override
public void run() {
int thisProposal = proposal;
while (thisProposal < 10) {
if (thisProposal != proposal) {
System.out.println("Принято предложение №" + proposal);
thisProposal = proposal;
}
}
}
}
}
*/