【问题标题】:How to interupt a timer until code is finished executing如何在代码执行完成之前中断计时器
【发布时间】:2021-01-25 14:30:18
【问题描述】:

我创建了一个需要在 Java 驱动的 PLC 上运行的状态机。我想像现在一样以 250 毫秒的间隔检查/运行代码。唯一的问题是,在某些州,我实施了延迟。 所以我想要的是该延迟(例如 1 秒延迟)首先完成,然后 250 毫秒间隔计时器可以再次继续。您将如何执行此操作/如何中断 250 毫秒计时器,直到代码完成执行?

public class demoClass{

    public void main(){
        Timer t = new Timer();
        t.schedule(new TimerTask() {
            @Override
            public void run() {
                switch (StateMachine()) { //statemachine determines logic between states
                    case s10_StandBy:
                        doSomething_1();
                        break;

                    case s20_NormalStartOrFlush:
                        doSomething_2();
                        break;
        
                }
            }
        }, 0, 250);
    }
    
    public void doSomething_1(){
    // for example a one second delay is implemented here
    }
    
    }
}

【问题讨论】:

    标签: java timer delay interrupt


    【解决方案1】:

    我会考虑使用ScheduledExecutorService 并以这种方式重写您的 main 方法:

    public class demoClass{
    
        public void main(){
            Runnable task1 = () -> {
                switch (StateMachine()) { //statemachine determines logic between states
                    case s10_StandBy:
                        doSomething_1();
                        break;
    
                    case s20_NormalStartOrFlush:
                        doSomething_2();
                        break;
    
                }
            };
    
            ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
            service.scheduleWithFixedDelay(task1, 0, 250, TimeUnit.MILLISECONDS);
        }
        
        public void doSomething_1(){
        // for example a one second delay is implemented here
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多