实时java - 如何应用多次运行

时间:2012-09-02 00:17:49

标签: java multithreading algorithm real-time

我正在研究实时java实现传感器网络模拟。我的模拟工作,但问题是我想做一些灵敏度分析,所以我需要多次运行模拟,一个接一个。在第一次迭代后,我无法获得任何结果,因为暂停和激活或重置它们有点问题。所以这是代码:

class Response_Time extends SimulationProcess{

/*static Random seed ;

public Response_Time(Random seeds) {
    seed= new Random (seeds);
}*/


public static void main(String[] args){

    for(int i=0;i<5; i++)
    {

    Response_Time exp = new Response_Time();
    exp.await();

    }

}


public void run(){



    System.out.println("Creating components...");
    Mesh2DSensorNetwork sn = new Mesh2DSensorNetwork(7,7);
    Task_Generator tg = new Task_Generator(sn);     
    emiission ee = new emiission(sn);
    DataCollection dc = new DataCollection(sn, tg);


    try {

        tg.Activate();
        ee.Activate();
        dc.Activate();
        sn.Activate();
        Scheduler.startSimulation();
        System.out.println("Simulation started... "+CurrentTime());
        Hold(576000);
        System.out.println("Simulation stopped... "+CurrentTime());
        Scheduler.stopSimulation();
        tg.terminate();
        ee.terminate();
        dc.terminate();
        sn.terminate();
        SimulationProcess.mainResume();

    } catch (Exception e) {
        e.printStackTrace();
    } 

}


public void await ()
{
    this.Resume();
    //SimulationProcess.mainSuspend();
}

}

1 个答案:

答案 0 :(得分:0)

我认为您需要使用Scheduler.reset()重新启动模拟。您还可能需要在当前进程上调用SimulationProcess.finalize()以将其从当前进程集合中删除(此项目对静态/全局成员有一些丑陋的使用)。