-
Notifications
You must be signed in to change notification settings - Fork 0
/
Creator.java
49 lines (41 loc) · 1.34 KB
/
Creator.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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Queue;
import java.util.concurrent.atomic.AtomicInteger;
public class Creator implements Runnable {
// AtomicInteger i;
private final int MAX_CAP = 1;
ArrayList<Job> jobQueue;
Queue queue;
Creator(final Queue q, ArrayList<Job> jQueue){
this.jobQueue = jQueue;
this.queue = q;
}
// Creator(AtomicInteger i){
// this.i = i;
// }
@Override
public void run(){
// System.out.println("Creator: Running...");
try{
Iterator<Job> itr = queue.iterator();
while (itr.hasNext())
addJob(itr.next());
} catch (InterruptedException ex) {
ex.printStackTrace();
}
// System.out.println("Creator: Exit...");
}
private void addJob(Job j) throws InterruptedException {
synchronized (jobQueue){
while (jobQueue.size() == MAX_CAP){
// System.out.println("Job Queue is FULL " + Thread.currentThread().getName() + " is waiting , size: " + jobQueue.size());
jobQueue.wait();
}
Thread.sleep(500);
jobQueue.add(j);
System.out.println("Thread " + j.getProcessID() + " is put to the job queue");
jobQueue.notifyAll();
}
}
}