java中如何使用循环超时?

Win*_*tto 2 java multithreading loops timeout while-loop

我制作的这段代码。

public long detecFace(int threshold, int dir, JLabel... lbl) throws InterruptedException {

    long timeStart = Calendar.getInstance().getTimeInMillis();         
    BufferedImage[] finalImg = new BufferedImage[10];
    BufferedImage[] edgeImage = new BufferedImage[10];

    long t = System.currentTimeMillis();
    long end = t-300000;
    while (t < end){
        for (int i = 0; i < 5; i++) {
            ip.setFileImage(df.getFile()[i]);
            ip.procesImage(threshold, dir);
            edgeImage[i] = ip.getEdgeImage();
            //ImageDrawer.drawOriginalImage(edgeImage[i]); //BENER HASIL YANG KELUAR
            finalImg[i] = showSelectedFace(RHT(edgeImage[i]), ResearchData.getOriginalImage()[i]);
            //ImageDrawer.drawOriginalImage(finalImg[i]); //SALAH HASIL YANG KELUAR
            int count = 1;
            int total = count + i;
            System.out.println(total);

            if (finalImg[i] != null)
            {
                ui.drawerImage(finalImg[i], lbl[i]);
            } else {
                System.out.println("Failed!");
            }
        }
    Thread.sleep(end);
    }    
    ResearchData.setEdgeImage(edgeImage);
    ResearchData.setFinalImage(finalImg);

    long timeEnd = Calendar.getInstance().getTimeInMillis();
    long tt = timeEnd - timeStart;
    long second = tt/1000;
    long minute = second/60;
    long seconds = second%60;
    System.out.println("minute =" +minute+ "; second =" +seconds);     
    return tt;   
}`
Run Code Online (Sandbox Code Playgroud)

我尝试使用超时进行循环,但我将结果堆叠起来。没有错误,但逻辑错误。我想让我的程序运行 3 或 5 分钟,只要程序运行,就会再次循环。帮助我找到问题的最佳解决方案。谢谢

Pan*_*mit 5

尝试这样。

  long start = System.currentTimeMillis();
    long end = start + 300000;
    while(true) {
        //do your code
        //
        if(System.currentTimeMillis() > end) {
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)