我正在开发一个Java游戏机,它有10轮,每轮2分钟。我需要一种方法来使用线程来提醒用户每30秒一次,然后覆盖main方法,并在两分钟过后将用户从游戏循环中分离出来。
我怎样才能使用线程来断开一个函数的主循环并将用户返回到另一个函数?
由于
答案 0 :(得分:0)
您可以在循环中使用非阻塞API(例如,为您提供键盘/鼠标的当前状态而不是阻止),并且在超时发生时不运行下一次迭代。
或者你可以中断线程,如果这个被阻塞/睡眠在一个阻塞API上,调用这个线程的中断方法:
refToThreadToInterupt.interupt();
如果线程被阻塞或者将interupt标志设置为true,则会生成InteruptedException。可以通过以下方式检查:
refToThreadToInterup.isInterupted();
由于你不知道线程在中断它时做了什么,你不知道你是否得到了异常,或者布尔值是否只是设置为true,所以你必须同时处理它们例。