Skip to content

Commit 6e76227

Browse files
committed
Finished Thread Pool example code.
1 parent 4c0a300 commit 6e76227

File tree

5 files changed

+111
-0
lines changed

5 files changed

+111
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,41 @@
11
package com.iluwatar;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.concurrent.ExecutorService;
6+
import java.util.concurrent.Executors;
7+
38
public class App {
49

510
public static void main( String[] args ) {
11+
12+
System.out.println("Program started");
13+
14+
List<Task> tasks = new ArrayList<>();
15+
tasks.add(new PotatoPeelingTask(3));
16+
tasks.add(new PotatoPeelingTask(6));
17+
tasks.add(new CoffeeMakingTask(2));
18+
tasks.add(new CoffeeMakingTask(6));
19+
tasks.add(new PotatoPeelingTask(4));
20+
tasks.add(new CoffeeMakingTask(2));
21+
tasks.add(new PotatoPeelingTask(4));
22+
tasks.add(new CoffeeMakingTask(9));
23+
tasks.add(new PotatoPeelingTask(3));
24+
tasks.add(new CoffeeMakingTask(2));
25+
tasks.add(new PotatoPeelingTask(4));
26+
tasks.add(new CoffeeMakingTask(2));
27+
tasks.add(new CoffeeMakingTask(7));
28+
tasks.add(new PotatoPeelingTask(4));
29+
tasks.add(new PotatoPeelingTask(5));
30+
31+
ExecutorService executor = Executors.newFixedThreadPool(3);
32+
for (int i=0; i<tasks.size(); i++) {
33+
Runnable worker = new Worker(tasks.get(i));
34+
executor.execute(worker);
35+
}
36+
executor.shutdown();
37+
while (!executor.isTerminated()) {
38+
}
39+
System.out.println("Program finished");
640
}
741
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.iluwatar;
2+
3+
public class CoffeeMakingTask extends Task {
4+
5+
private static int TIME_PER_CUP = 300;
6+
7+
public CoffeeMakingTask(int numCups) {
8+
super(numCups * TIME_PER_CUP);
9+
}
10+
11+
@Override
12+
public String toString() {
13+
return String.format("%s %s", this.getClass().getSimpleName(), super.toString());
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.iluwatar;
2+
3+
public class PotatoPeelingTask extends Task {
4+
5+
private static int TIME_PER_POTATO = 500;
6+
7+
public PotatoPeelingTask(int numPotatoes) {
8+
super(numPotatoes * TIME_PER_POTATO);
9+
}
10+
11+
@Override
12+
public String toString() {
13+
return String.format("%s %s", this.getClass().getSimpleName(), super.toString());
14+
}
15+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.iluwatar;
2+
3+
public abstract class Task {
4+
5+
private static int nextId = 1;
6+
7+
private int id;
8+
private int timeMs;
9+
10+
public Task(int timeMs) {
11+
this.id = nextId++;
12+
this.timeMs = timeMs;
13+
}
14+
15+
public int getId() {
16+
return id;
17+
}
18+
19+
public int getTimeMs() {
20+
return timeMs;
21+
}
22+
23+
@Override
24+
public String toString() {
25+
return String.format("id=%d timeMs=%d", id, timeMs);
26+
}
27+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.iluwatar;
2+
3+
public class Worker implements Runnable {
4+
5+
private Task task;
6+
7+
public Worker(Task task) {
8+
this.task = task;
9+
}
10+
11+
@Override
12+
public void run() {
13+
System.out.println(String.format("%s processing %s", Thread.currentThread().getName(), task.toString()));
14+
try {
15+
Thread.sleep(task.getTimeMs());
16+
} catch (InterruptedException e) {
17+
e.printStackTrace();
18+
}
19+
}
20+
}

0 commit comments

Comments
 (0)