-1

A、B、C、D、E などのいくつかのサーバーにアクセスできます。これらのサーバーからラウンド ロビン方式で 1 ​​つずつデータを選択したいと思います。私はJavaとスレッドが初めてです。これで私を助けてくれればとても助かります。

私がやろうとしているのは、アプリケーションにマップをロードすることです。HTTP リクエストをサーバーに送信します。これらのサーバーは応答をビットマップ形式に戻し、これらの画像 (タイル) を配置してアプリケーションに表示しますが、順番に実行しています。たとえば、最初にサーバー A にタイルを取得するように要求し、次にサーバー B というように要求します。サーバー A が 1 つの画像をダウンロードし、サーバー B が他の画像をダウンロードするような方法でタイルを取得したいと考えています。マルチスレッドを使用せずに 1 つのサーバーを使用してすべてを単独で実行すると、マップ全体を表示するのに長い時間がかかります。

4

2 に答える 2

2

配列内の各サーバーのベース URL を持ち、前回ヒットしたサーバーを追跡する URL ビルダーを作成します。次回データが必要になったときは、次のサーバーのベース URL を返すだけです。

于 2012-08-18T07:02:19.993 に答える
1

モジュロを使用する例を参照してください: (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)
于 2012-08-18T07:10:09.753 に答える