一遍又一遍地初始化重复任务的最佳实践是什么?

时间:2012-03-19 23:42:31

标签: java arrays initialization

我是一个使用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;
    }
}

2 个答案:

答案 0 :(得分:1)

你的问题很通用,所以我担心我的答案也非常通用。为了帮助避免使用ArrayIndexOutOfBoundsExceptions,请尽可能在数组和for-each对象上使用简明Iterable语法。

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

答案 1 :(得分:1)

根据您对数组的使用情况,您应该查看以下类: 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

除非你想要一个基本类型数组(int,double,char等),否则通常不鼓励使用“旧样式”数组。