java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java动态执行while循环

java如何动态执行while循环

作者:奈何、草

这篇文章主要介绍了java如何动态执行while循环问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题描述

public void M1(int second){
        boolean flag = true;
        while(flag){
            //执行second秒后退出while循环
        }
    }

实现思路

设置一个定时器执行定时任务,到达指定时间后把flag的值设置成false

代码

import java.util.Timer;
import java.util.TimerTask;

public class Main {
    public static void main(String[] args) throws Exception {
        Timer timer = new Timer();//定时器
        int delay = 5;//秒
        Provider pd = new Provider(timer);
        pd.M1(delay);
        Thread.sleep(delay+100);
        timer.cancel();//注销定时器,否则虚拟机不退出
        
    }
}

class Provider{
    private Timer timer = null;
    public Provider(Timer timer){
        this.timer = timer;
    }
    
    public void M1(int second) {
        // TODO Auto-generated method stub
        class ScheduleHelper{
            public boolean flag = true;
        }
        final ScheduleHelper helper = new ScheduleHelper();//final内部类才能调用
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("set end");
                helper.flag = false;//设置结束
                
            }
        }, second*1000);
        while (helper.flag) {
                try {
                    Thread.sleep(1000);//1秒执行一次while循环
                    System.out.println("executing.....");
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
        }
        System.out.println("method end");    
    }
}

执行结果

executing.....
executing.....
executing.....
executing.....
executing.....
set end
executing.....
method end

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文