我真的不想开始一个线程然后让它进入睡眠状态,例如:
Thread.start();
Thread.sleep(3000); //*Example*
相反,我希望这样的事情(我为这个业余插图道歉):
Thread.start(3000) //*thread will be given a certain amount of time to execute*
//*After 3000 milliseconds, the thread stops and or sleeps*
我之所以这样做,是因为我制作了一个程序/迷你游戏,用户输入一段时间。基本上,用户有5秒钟输入某个字符/数字/字母,在此之后,输入流被切断。有点像:
Scanner kb = new Scanner(System.in);
int num = kb.nextInt();
kb.close() //*Closes kb and input stream in turn*
答案 0 :(得分:3)
我建议您使用ScheduledExecutorService
和scheduleWithFixedDelay(Runnable, long, long, TimeUnit)
。如果用户在延迟到期之前完成任何任务,您可以取消该操作。如果延迟用完,那么用户就会失败。
答案 1 :(得分:0)
你可以尝试这个样本。
final List<Integer> result = new ArrayList<>();
Thread thread = new Thread() {
volatile boolean isDone = false;
Timer timer = new Timer();
@Override
public void run() {
timer.schedule(new TimerTask() {
@Override
public void run() {
isDone = true;
}
}, 5000);
Scanner kb = new Scanner(System.in);
while (!isDone) {
int num = 0;
num = kb.nextInt();
result.add(num);
}
kb.close();
}
};
thread.start();
thread.join();
for (Integer i : result) {
System.out.print(i + " ");
}