问题描述
这里我有一个每 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 (将#修改为@)