打印文本直到设定的时间用完

问题描述

这里我有一个每 5 秒打印一次文本的程序。但我也需要它来打印 5 秒内的数据。

例如:

做手势 1

(这里用户正在做手势,我需要打印所有数据直到 5 秒过去)

做手势 2

(打印所有数据直到 5 秒过去)

等等。

我尝试添加一个计数器,但它只打印了 5 次数据,然后再次等待 5 秒通过。但我想在这 5 秒过去时打印数据。

int i = 1;
Timer t = new Timer();
        t.schedule(new TimerTask() {
            @Override
            public void run() {
                if (i == 13) {
                    Thread.currentThread().stop();
                } else {
                    if (i % 2 != 0) {
                        System.out.println("Make gesture 1");
                        int currentSec = 0;
                        while (currentSec < 6) {
                            System.out.println("gesture data");
                            currentSec++;
                        }
                        i++;
                    } else {
                        System.out.println("Make gesture 2");
                        int currentSec = 0;
                        while (currentSec < 6) {
                            System.out.println("gesture data");
                            currentSec++;
                        }
                        i++;
                    }
                }

            }
        },5000);

有没有办法获取 TimerTask 的剩余时间并在循环中使用该时间?如果不是,我还能怎么做?

输出示例:

做手势 7

-6、-4、1、-2、-3、0、-1、1、7

3、-2、-4、3、-1、-2、-1、-3、7

7,5,-3,1,-1,-2,7

0,2,3,7

-2、-3、0、-4、-5、-3、-1、1、7

-2、-3、0、-4、-5、-3、-1、1、7

-2、-3、0、-4、-5、-3、-1、1、7

2,7

-1、0、-2、-5、-2、0、-1、0、7

1,-6,7

-3、-1、-3、-1、2、0、0、-3、7

2,7

-3、-1、5、2、2、0、-1、-3、7

-3、-1、5、2、2、0、-1、-3、7

。 . .

使手势 0:

4,-10,21,10,0

12,6,15,13,-35,24,0

-5,9,-18,-9,0

1、-14、-1、-3、-29、-6、8、2、0

-22、-20、-8、-6、-7、-2、3、-9、0

1,-5,-4,4,14,0

0,-30,-19,0

-3,7,0

10,-8,0

3,-14,-38,-11,55,59,27,0

-3、-12、-10、-3、-2、0、8、-5、0

-3、-12、-10、-3、-2、0、8、-5、0

-1、-11、-3、-2、5、-6、-18、3、0

2,22,0

...

我通过在 if 和 else 中使用 Thread 设法做到了这一点,但有没有更好的方法来做到这一点?

       if (i % 2 != 0) {
            System.out.println("Make gesture 1");
            final long pastTime = System.currentTimeMillis();
            Thread t1 = new Thread(new Runnable() {
                @Override
                public void run() {
                    while (true) {
                        System.out.println(data);
                        long currTime= System.currentTimeMillis();
                        if (currTime>= (pastTime + 5 * 1000)) {
                            Thread.currentThread().stop();
                        }
                    }
                }
            });
            t1.start();
            i++;
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)