java - 打印文本直到设置的时间用完
问题描述
在这里,我有一个每 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++;
}
}
}
}, 0, 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、0、5、7
0, -2, 0, 2, -1, -1, 3, 0, 7
0, -2, 0, 2, -1, -1, 3, 0, 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、-1、0、2、-1、0、-2、-1、7
-1, 0, -2, -5, -2, 0, -1, 0, 7
1、1、0、-6、-2、-1、-1、-1、7
-3、-1、-3、-1、2、0、0、-3、7
2、2、3、-2、0、-1、-2、3、7
-3、-1、5、2、2、0、-1、-3、7
-3、-1、5、2、2、0、-1、-3、7
. . .
做手势0:
4, -10, -10, 5, 21, 3, 10, 0, 0
12、6、15、10、13、-35、-1、24、0
-5、9、1、-2、-1、-6、-18、-9、0
-5、9、1、-2、-1、-6、-18、-9、0
-5、9、1、-2、-1、-6、-18、-9、0
1、-14、-1、-3、-29、-6、8、2、0
-22、-20、-8、-6、-7、-2、3、-9、0
1、0、1、1、-5、-4、4、14、0
0、2、-5、0、-4、1、-30、-19、0
0, 2, -6, -4, 6, 5, 2, 6, 0
-3、1、-1、-3、7、-2、-9、1、0
-3、1、-1、-3、7、-2、-9、1、0
-3、1、-1、-3、7、-2、-9、1、0
10、21、-1、-1、-2、-4、-8、2、0
3、5、2、4、-14、-38、-11、0、0
-3、4、9、4、55、59、27、2、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, -9, 0, 2, 22, 13, 2, -4, 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++;
}
解决方案
推荐阅读
- php - 从 HTML 内部调用 switch case 函数
- html - 如何在文本顶部设置 ol 列表编号?
- php - 基于关系的 Laravel 中间件
- javascript - 单击父“选择所有复选框”时在子复选框旁边显示图像
- typescript - 启用/禁用相关字段的单选按钮 - 角度 6
- angular - Angular Highcharts - 如何启用 noData 选项并动态更新它
- select - 列出没有特定语言键的材料
- python - 如何使用 CSV 文件中的数据将某些单元格中以逗号分隔的数据行转换为单列?
- c - 控制台不输出 unicode 字符
- android - 是否可以在一个底部导航视图中访问不同的片段?