-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
85 lines (61 loc) · 2.42 KB
/
Copy pathSolution.java
File metadata and controls
85 lines (61 loc) · 2.42 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
//And he carried me away in the spirit to a great and high mountain, and shewed me that great city, the holy Jerusalem, descending out of heaven from God (Revelation 21:10)
package com.javarush.task.task28.task2808;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
/*
Осваиваем Callable
*/
public class Solution {
public static void main(String[] args) throws InterruptedException, ExecutionException {
List<Future<String>> futures = new ArrayList<>();
ExecutorService executor = Executors.newFixedThreadPool(5);
for (int i = 1000; i <= 1010; i++) {
futures.add(executor.submit(getTask(i)));
}
futures.add(executor.submit(getTask(10000000)));
for(Future<String> future : futures) {
System.out.println(future.get());
}
executor.shutdown();
executor.awaitTermination(10, TimeUnit.SECONDS);
/* output
500500
501501
502503
503506
504510
505515
506521
507528
508536
509545
510555
50000005000000
*/
}
public static Callable<String> getTask(final int i) {
return new Callable<String>() {
private BigDecimal summ = new BigDecimal(0);
@Override
public String call() throws Exception {
for (int j = 1; j < i+1; j++) {
summ = summ.add(BigDecimal.valueOf(j));
}
return summ.toString();
}
};
}
}
/*
Осваиваем Callable
Реализуй логику метода getTask, который должен возвращать объект Callable.
Объект Callable должен вычислять сумму всех чисел от 1 до переданного числа i включая его, и возвращать его в виде строки.
Метод main не участвует в тестировании.
Требования:
1. Класс Solution должен содержать статический метод getTask(int).
2. Метод getTask должен возвращать объект Callable.
3. Объект Callable должен возвращать в виде строки сумму всех чисел от 1 до переданного числа i, включая его
4. Сумма должна правильно считаться для чисел произвольной длины.
*/