-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
78 lines (62 loc) · 2.49 KB
/
Solution.java
File metadata and controls
78 lines (62 loc) · 2.49 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
//For the wisdom of this world is foolishness with God. For it is written, He takes the wise in their own craftiness (1Cor 3:19)
package com.javarush.task.task26.task2612;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/*
Весь мир играет комедию
*/
public class Solution {
private Lock lock = new ReentrantLock();
public void someMethod() {
lock.lock();
if (lock.tryLock()) {
try {
ifLockIsFree();
}
finally {
lock.unlock();
}
}
else {
ifLockIsBusy();
}
}
public void ifLockIsFree() {
}
public void ifLockIsBusy() {
}
}
/*
Весь мир играет комедию
Почитать про java.util.concurrent.locks.Lock на http://docs.oracle.com/ (там все есть в джавадоках!)
Написать реализацию метода someMethod:
1. попытаться захватить лок
1.1. если лок занят, то вызвать метод ifLockIsBusy
1.2. если лок свободен, то:
1.2.1 вызвать метод ifLockIsFree
1.2.2 отпустить лок при любых условиях, даже если ifLockIsFree будет кидать исключение
Требования:
1. Класс Solution содержать приватное поле Lock lock.
2. Класс Solution содержать публичный метод ifLockIsFree.
3. Класс Solution содержать публичный метод ifLockIsBusy.
4. Метод someMethod должен пытаться захватить лок.
5. Метод someMethod должен вызвать метод ifLockIsBusy если лок занят.
6. Метод someMethod должен вызвать метод ifLockIsFree если лок свободен.
7. Метод someMethod должен отпускать лок при любых условиях, даже если ifLockIsFree будет кидать исключение.
package com.javarush.task.task26.task2612;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
*
Весь мир играет комедию
*
public class Solution {
protected Lock lock = new ReentrantLock();
public void someMethod() {
//implement logic here, use the lock field
}
public void ifLockIsFree() {
}
public void ifLockIsBusy() {
}
}
*/