-
Notifications
You must be signed in to change notification settings - Fork 2
/
TestThread2d.java
51 lines (46 loc) · 1.66 KB
/
TestThread2d.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
50
51
import java.util.Date;
class TestThread2d extends Thread {
private String name;
private int cpuBurst;
private long submissionTime;
private long activationTime;
private long completionTime;
private long lastExecutionTime;
private long totalExecutionTime;
private long totalWaitTime;
private static final int TIMEQUANTUM = 100;
public TestThread2d ( String args[] ) {
name = args[0];
cpuBurst = Integer.parseInt( args[1] );
submissionTime = new Date().getTime();
SysLib.cout(
String.format(
"%05d: Thread[%s] submitted\n", submissionTime % 100000, name ) );
}
public void run( ) {
long totalExecutionTime = 0;
long totalWaitTime = 0;
activationTime = new Date().getTime();
lastExecutionTime = activationTime;
for ( int burst = cpuBurst; burst > 0; burst -= TIMEQUANTUM ) {
long currentTime = new Date().getTime();
totalWaitTime += (currentTime - lastExecutionTime);
totalExecutionTime += TIMEQUANTUM;
lastExecutionTime = currentTime + TIMEQUANTUM;
SysLib.cout(
String.format(
"%05d: Thread[%s] is running (%5d, %5d)\n",
currentTime % 100000, name, totalExecutionTime, totalWaitTime ) );
SysLib.sleep( TIMEQUANTUM );
}
completionTime = new Date().getTime();
long responseTime = activationTime - submissionTime;
long turnaroundTime = completionTime - submissionTime;
SysLib.cout(
String.format(
"%05d: Thread[%s]: response: %5d; wait: %5d; execution: %5d; turnaround: %5d\n",
completionTime % 100000, name,
responseTime, totalWaitTime, totalExecutionTime, turnaroundTime ) );
SysLib.exit();
}
}