Round Robin用于选择服务器

时间:2012-08-18 06:55:06

标签: java android multithreading tiles

我可以访问几个服务器,例如A,B,C,D和E.我想以循环方式逐个选择来自这些服务器的数据。我是Java和线程的新手,如果你可以帮助我,那将是一个很好的帮助。

我要做的是在我的应用程序中加载地图,我将HTTP请求发送到服务器。这些服务器以位图格式恢复响应,我安排这些图像(Tiles)并在我的应用程序中显示它,但我按顺序执行它。例如。我首先请求服务器A然后获取服务器B等等。我希望以服务器A下载一个图像,服务器B执行另一个图像的方式获取图块。如果我在不使用多线程的情况下单独使用一台服务器,那么显示整个Map需要很长时间。

2 个答案:

答案 0 :(得分:2)

创建一个url构建器,其中包含数组中每个服务器的基本URL,并跟踪上次命中的服务器。下次需要数据时,只需返回下一个服务器的基本URL。

答案 1 :(得分:1)

使用modulo参见示例: (使用String作为url)

public static final int MAX_SERVER = 4;

public static void main(String[] args)
{

    String urlarr[] = new String[MAX_SERVER];
    init(urlarr);

    int idx = 0;
    while(idx < 1000){
        String next = urlarr[idx++%urlarr.length];
        System.out.println(next);
    }
}

private static void init(String[] urlarr)
{
    for(int i=0 ; i<urlarr.length ; i++){
        urlarr[i] = "url("+i+")";
    }

}

在idx上使用数组的模块大小使得它在这种情况下迭代所有可用索引0,1,2,3。 输出的一部分:

url(0)
url(1)
url(2)
url(3)
url(0)
url(1)
url(2)
url(3)