Java与循环和阅读列表

时间:2012-12-18 17:26:25

标签: java multithreading loops time

我不是专家,只是初学者。所以我恳请你为我写一些代码。

我有四个ArrayLists - > java中的error_list_A, list_A, error_list_B, list_B。 有一个单独的程序独立运行,可以将对象添加到这些列表中。

我需要编写一个单独的程序,读取它们1分钟或直到它们为空,然后转到下一个程序。该程序应始终处于运行模式并监听这些列表并进行处理。

像...这样的东西。

  1. 阅读error_list_A并处理其元素。

    如果没有元素,则转到list_A

    如果元素然后读取元素并删除它们直到所有元素都被处理或达到1分钟的时间限制,那么转到list_A

  2. 阅读list_A并处理其元素。

    如果没有元素,则转到error_list_B

    如果元素然后读取元素并删除它们直到所有元素都被处理或达到1分钟的时间限制,那么转到error_list_B

  3. 阅读error_list_B并处理其元素。

    如果没有元素,则转到list_B

    如果元素然后读取元素并删除它们直到所有元素都被处理或达到1分钟的时间限制,那么转到list_B

  4. 阅读list_B并处理其元素。

    如果没有元素,那么转到error_list_A(循环返回以查看error_list_A中是否有新元素)

    如果元素然后读取元素并删除它们直到所有元素都被处理或达到1分钟的时间限制,那么转到error_list_A(循环返回以查看error_list_A中是否有新元素)

  5. 循环回到第1步。

  6. 你能发布一些示例代码吗?

    我知道如何阅读和处理它们,以便您可以忽略该部分。只需要代码在列表之间切换并保持它们在循环中读取。

    它不是作业。在实际的程序中,我必须通过读取存储来自Web应用程序的错误的目录来实现它。所以请不要忽视它,说你正在帮忙做作业。

    我试过这样的事情......

    public class ListReader {
    
        private static List<Object> list_A, error_list_A, list_B, error_list_B; // Initialize list by reading them.
    
        public static void main(String[] args) {
            while (true) {
                if (error_list_A != null && error_list_A.size() > 0) {
                    processList(error_list_A);
                } else if (list_A != null && list_A.size() > 0) {
                    processList(list_A);
                } else if (list_B != null && list_B.size() > 0) {
                    processList(list_B);
                } else if (error_list_B != null && error_list_B.size() > 0) {
                    processList(error_list_B);
                }
            }
        }
    
        private static void processList(List<Object> list){
            // Code for when empty or time limit reached then return
        }
    
    }
    

    但似乎没有意义。

    谢谢。

1 个答案:

答案 0 :(得分:3)

我建议你自己编写代码。只有这样,你才会学习语言。 计算机科学中最困难的问题是找到问题的最佳算法。如果你手头有算法,实现很容易。

因此,请对算法进行编码,如果您遇到一些错误或问题,请在此处发布。

更新

 if (error_list_A != null && error_list_A.size() > 0) {
                processList(error_list_A);
            }
if (list_A != null && list_A.size() > 0) {
                processList(list_A);
            }
if (list_B != null && list_B.size() > 0) {
                processList(list_B);
            }
if (error_list_B != null && error_list_B.size() > 0) {
                processList(error_list_B);
            }

在processList函数中,启动计时器然后从list开始处理每个元素。在处理每个元素之前,检查计时器。如果超过1分钟你可以从函数返回,否则继续。继续这个直到你到达列表结束。如果时间尚未超过1分钟,请返回。