【问题标题】:what are the best practices to initialize a repeating task over and over again一遍又一遍地初始化重复任务的最佳实践是什么
【发布时间】:2012-04-04 11:50:15
【问题描述】:

我是使用 java 的 OOP 方面的新手,我正在学习中,很大程度上得益于这个社区的帮助。

我已经构建了一个程序,它使用一个对象重复执行一项任务,该任务一遍又一遍地从 Excel 工作表中读取并从中提取数据。

我想知道一遍又一遍地初始化这个任务的最佳实践是什么,这样我就不会在数组上遇到越界索引和其他变量错误?

这是我用来刷新 gui 的线程代码(以及一遍又一遍地从文件中读取)。如您所见,它正在从不同的类中调用一些方法。当调用此方法时 - 局部变量和索引数组已经保存了一些来自先前迭代的数据:

    public void check() {
        Thread check = new Thread() {
            public void run() {
                for (;;) {
                    EventQueue.invokeLater(new Runnable() {
                        public void run() {
                            // Update GUI here on EventQueue.

                            try {
                                Task.readTasks();
                            } catch (InvalidFormatException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        label.setText("Next Task Is: " + Task.printNextTask);
                        }
                    });

                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException ie) {
                        break;
                    }
                    if (killcheck)
                        break;

                }
            }
        };
        check.start();
    }

    public void stopChecking() {
        killcheck = true;
    }
}

【问题讨论】:

  • 你有一些示例代码吗?
  • 我添加了一些代码,希望现在更清晰。

标签: java arrays initialization


【解决方案1】:

你的问题很笼统,所以恐怕我的回答也很笼统。为帮助避免 ArrayIndexOutOfBoundsExceptions,请在数组和 Iterable 对象上尽可能使用简洁的 for-each 语法。

也许您还会发现 this answer 对有关工作队列的问题很有帮助。

【讨论】:

    【解决方案2】:

    根据您对数组的用途,您应该查看以下类: http://docs.oracle.com/javase/6/docs/api/index.html?java/util/ArrayList.html

    http://docs.oracle.com/javase/6/docs/api/java/util/Vector.html

    http://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html

    Java 中通常不鼓励使用“旧式”数组,除非您需要原始类型数组(int、double、char 等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多