|
Lines 127-132
Link Here
|
| 127 |
*/ |
127 |
*/ |
| 128 |
private final JobQueue waiting; |
128 |
private final JobQueue waiting; |
| 129 |
|
129 |
|
|
|
130 |
/** |
| 131 |
* Counter to record wait queue insertion order. |
| 132 |
*/ |
| 133 |
private long waitQueueCounter; |
| 134 |
|
| 130 |
public static void debug(String msg) { |
135 |
public static void debug(String msg) { |
| 131 |
StringBuffer msgBuf = new StringBuffer(msg.length() + 40); |
136 |
StringBuffer msgBuf = new StringBuffer(msg.length() + 40); |
| 132 |
if (DEBUG_TIMING) { |
137 |
if (DEBUG_TIMING) { |
|
Lines 319-324
Link Here
|
| 319 |
switch (newState) { |
324 |
switch (newState) { |
| 320 |
case Job.NONE : |
325 |
case Job.NONE : |
| 321 |
job.setStartTime(InternalJob.T_NONE); |
326 |
job.setStartTime(InternalJob.T_NONE); |
|
|
327 |
job.setWaitQueueStamp(InternalJob.T_NONE); |
| 322 |
case InternalJob.BLOCKED : |
328 |
case InternalJob.BLOCKED : |
| 323 |
break; |
329 |
break; |
| 324 |
case Job.WAITING : |
330 |
case Job.WAITING : |
|
Lines 334-339
Link Here
|
| 334 |
case Job.RUNNING : |
340 |
case Job.RUNNING : |
| 335 |
case InternalJob.ABOUT_TO_RUN : |
341 |
case InternalJob.ABOUT_TO_RUN : |
| 336 |
job.setStartTime(InternalJob.T_NONE); |
342 |
job.setStartTime(InternalJob.T_NONE); |
|
|
343 |
job.setWaitQueueStamp(InternalJob.T_NONE); |
| 337 |
running.add(job); |
344 |
running.add(job); |
| 338 |
break; |
345 |
break; |
| 339 |
case InternalJob.ABOUT_TO_SCHEDULE : |
346 |
case InternalJob.ABOUT_TO_SCHEDULE : |
|
Lines 443-448
Link Here
|
| 443 |
changeState(job, Job.SLEEPING); |
450 |
changeState(job, Job.SLEEPING); |
| 444 |
} else { |
451 |
} else { |
| 445 |
job.setStartTime(System.currentTimeMillis() + delayFor(job.getPriority())); |
452 |
job.setStartTime(System.currentTimeMillis() + delayFor(job.getPriority())); |
|
|
453 |
job.setWaitQueueStamp(waitQueueCounter++); |
| 446 |
changeState(job, Job.WAITING); |
454 |
changeState(job, Job.WAITING); |
| 447 |
} |
455 |
} |
| 448 |
} |
456 |
} |
|
Lines 828-833
Link Here
|
| 828 |
InternalJob job = sleeping.peek(); |
836 |
InternalJob job = sleeping.peek(); |
| 829 |
while (job != null && job.getStartTime() < now) { |
837 |
while (job != null && job.getStartTime() < now) { |
| 830 |
job.setStartTime(now + delayFor(job.getPriority())); |
838 |
job.setStartTime(now + delayFor(job.getPriority())); |
|
|
839 |
job.setWaitQueueStamp(waitQueueCounter++); |
| 831 |
changeState(job, Job.WAITING); |
840 |
changeState(job, Job.WAITING); |
| 832 |
job = sleeping.peek(); |
841 |
job = sleeping.peek(); |
| 833 |
} |
842 |
} |