-
Notifications
You must be signed in to change notification settings - Fork 0
/
ThreadPoolApp.java
33 lines (31 loc) · 1.37 KB
/
ThreadPoolApp.java
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
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
public class ThreadPoolApp {
public static void main (String [] args) {
if (args.length < 2)
ThreadPoolApp.error();
try {
int numberOfJobs = Integer.parseInt(args[0]);
int numberOfThreads = Integer.parseInt(args[1]);
if ((numberOfJobs < 1) || (numberOfThreads < 1))
ThreadPoolApp.error();
ExecutorService pool = Executors.newFixedThreadPool(numberOfThreads);
Job [] jobs = new Job [numberOfJobs];
for (int i = 0; i < numberOfJobs; i++) {
jobs[i] = new Job (i);
pool.execute(jobs[i]); //executes the command at some future time.
}
pool.shutdown(); // Shutdown : previously submitted tasks are executed,
// but no new tasks will be accepted.
System.out.println ("Last line " + Thread.currentThread().getName());
} catch (NumberFormatException e) {
ThreadPoolApp.error();
}
}
private static void error() {
System.out.println("ThreadPoolApp must be run with two positive valued " +
" integer arguments. The first detailing the number of jobs " +
" the second the number of processing threads in the pool");
System.exit(0); // exit program
}
}