Runnable无法正常工作

时间:2015-11-26 03:56:23

标签: java override runnable

您好我创建了一个测试java代码,但类runnable不起作用。可运行构建器内部的代码工作但覆盖运行不起作用

import java.util.Timer;
import java.util.TimerTask;
import java.util.Random;

public class Test
{
    //timer for change zone
    private Timer timeZoneChange;

    Test()
    {
        timeZoneChange = new Timer();

        timeZoneChange.schedule(new TimeForChangeZone(), 1 * 1000);
    }


    public class TimeForChangeZone extends TimerTask
    {
        @Override
        public void run()
        {
            System.out.println("testing..");
            new UpdatePvpFlagZone(false);
            //change zone flag
            timeZoneChange.schedule(new TimeForChangeZone(), 1 * 60000);
        }
    }

    public class UpdatePvpFlagZone implements Runnable
    {
        //remove pvp flag
        private boolean removePvpFlag;

        public UpdatePvpFlagZone(boolean removePvpFlag)
        {
            removePvpFlag = removePvpFlag;
        }

        @Override
        public void run()
        {
            for (int i = 0; i<10; i++)
            {
                if (i == 5) 
                    break;
                //update flag
                if (!removePvpFlag) 
                {
                    if (i == 6)
                        break;  
                    System.out.println(i);
                    break;
                }
                //remove flag
                if (i == 7)
                    break;
                System.out.println(i);
            }
        }
    }

    public static void main(String[] args)
    {
        new Test();
    }
}

控制台打印此内容,但内部覆盖运行不打印。

> java Test
testing..

1 个答案:

答案 0 :(得分:0)

在这一行new UpdatePvpFlagZone(false);上,调用构造函数,但尚未启动runnable。

像这样启动runnable:

UpdatePvpFlagZone upfz new UpdatePvpFlagZone(false);
upfz.run();