Tôi có hai bộ đếm thời gian để quản lý đầu vào (en-queue) và đầu ra (dequeue) từ một hàng đợi FIFO nhưng tôi tiếp tục nhận được một ngoại lệ cho việc dequeueing java.lang.IllegalStateException: Timer đã bị hủy bỏ. Tôi không thể đặt một điểm dừng để gỡ lỗi dòng nơi lỗi được tuyên bố xảy ra dòng 83. Tôi không biết những gì tôi đang thiếu nên bất kỳ trợ giúp sẽ được đánh giá cao.Timer đã bị hủy
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
/**
* RunSim
*/
public class RunSim {
private double arrivalRate = 600;
private double y;
private Timer t;
private Timer t2;
private Queue fifoQueue;
private long xy;
private long fact = 10;
private int count;
private int pId;
public RunSim() {
Random r = new Random();
long n = System.currentTimeMillis();
r.setSeed(n);
double i = r.nextDouble();
y = ((1/arrivalRate) * (Math.log(i)));
xy = (long) y;
t = new Timer();
t2 = new Timer();
fifoQueue = new Queue();
count = 0;
pId = 0;
}
public static void main() {
RunSim rs = new RunSim();
rs.start();
}
public void start() {
class sendPacket extends TimerTask {
public void run() {
Packet p = new Packet();
p.setId(pId);
fifoQueue.insert(p);
p.setArrivalTime();
System.out.println("ID: " + p.getId() + " Arrival Time: "
+ p.getArrivalTime()/fact);
pId++;
}
}
class removePacket extends TimerTask {
public void run() {
fifoQueue.first().setDepartureTime();
System.out.println("ID: " + fifoQueue.first().getId()
+ " Departure Time: "
+ fifoQueue.first().getDepartureTime()/fact);
fifoQueue.remove();
}
}
while (count < 1000) {
long v = fact * (1 + Math.abs(xy));
t.schedule(new sendPacket(), 0, v);
count++;
t2.schedule(new removePacket(), 5, 5);
}
}
}
Và dấu vết ngăn xếp đầy đủ của ngoại lệ là ...? Và dòng 83 là ...? –
java.lang.IllegalStateException: Bộ hẹn giờ đã bị hủy. \t tại java.util.Timer.sched (Timer.java:354) \t tại java.util.Timer.schedule (Timer.java:222) \t tại RunSim.start (RunSim.java:83) \t tại RunSim.main (RunSim.java:47) Dòng 83: t2.schedule (new removePacket(), 5,5); – Vhas