比方说我要编一个游戏,屏幕上随机出现字符,我要在规定的时间内把屏幕上的字符通过键盘输进,如果成功了就加分,失败(超时)了就扣分,然后进行新一轮游戏。
这里我就遇到了了个问题,我用Runnable的方法,我要在5秒钟之内输入完屏幕上的字符,那么我就Thread.CurrentThread().sleep(5000);再通过侦听方式侦听我的按键,如果是失败了,由于run()里面是死循环,可以自动进行新一轮游戏,如果成功了,那么我就需要重置这个线程,否则run()里面的内容会继续运行下去。请问如何重置这个线程?可以把它删除然后在新建一个吗?还是有别的方法?

解决方案 »

  1.   

    加Flag控制是最好的办法
    run(){
    while(flag){
    ....
    }}等你要停时就把flag置成false
      

  2.   

    不过……如果while(flag)里面有sleep()的话,假设是sleep(5000),如果当进入sleep的时候才flag=false;,那么while里面的语句还是会运行完吧?那么此时如果我将flag重新设置成true,是不是还是要等sleep(5000)运行完?
      

  3.   


    sleep(5000);
    if (!lag) {
    break;
    }保证睡醒了后面的代码不执行,但睡觉了我就没办法了,只能让他睡了。