在run方法中获取stackOverFlow错误

时间:2013-12-01 15:07:51

标签: java multithreading function methods stack-overflow

这是获取错误的方法

public int getMaxTimeBetweenCustomers()
    {
        return Integer.parseInt(maxTimeBetweenCustomers);
    }

这是调用上述^方法的run方法。如果我尝试在方法之外初始化变量它不起作用,所以我不知道该怎么做。

 private void doSomething() throws InterruptedException
        {
         maxCustomers = myController.getMaxCustomers();
           int myCounter=0;
            String message;
            while(myCounter < maxCustomers)
            {
               Customer customer= this.generateCustomer();
               myServiceQueue = myServiceQueueManager.determineShortestQueue();
               myServiceQueue.insertCustomer(customer);
                 myTime = System.currentTimeMillis();
                myController.controllSetImages();


                myCounter++;
                System.out.println("my counter " + myCounter);


                try
                {
                    Thread.sleep(this.generateTimeBetweenCustomers());
                }
                catch(InterruptedException e)
                {
                    message = e.getMessage();
                    System.err.println(message);
                }

            }
        }

上面的方法doSomething()在run方法

中调用

1 个答案:

答案 0 :(得分:2)

您声明getMaxTimeBetweenCustomers()方法导致程序抛出StackOverflowException,但如果此方法仅包含您显示的代码行,则无法执行此操作。还有其他事情正在发生。

可能还有其他事情就是你正在进行递归。我必须猜测,但也许doSomething()直接或间接地从其包含的方法中调用,其中一种方法如下所示:

  • this.generateCustomer();
  • myController.getMaxCustomers();
  • myServiceQueueManager.determineShortestQueue();
  • myServiceQueue.insertCustomer(customer);
  • myController.controllSetImages();