2016-08-12 2 views
0

スレッドのプールを配列に作成しました。この配列に含まれている各オブジェクトにスレッドを生成させます。これは基本的に動きます。各オブジェクトは異なる方向に移動する必要がありますが、すべて同じ方向に移動します。 私は今のところこれを得た:オブジェクトの配列を管理して、それぞれにスレッドを生成させる方法は?

for (int i=0; i<network.mobiles.size(); i++) { 
      final int j = i ; 
     threadPool.submit(new Runnable() { 

      public void run() { 

       int value = 10 ; 

       for (int z=0; z<value; z++){ 
        value++; 
        int x = mobnod[j].getLocationOnScreen().x; 
        int y = mobnod[j].getLocationOnScreen().y; 
        double r = Math.random(); 
        if  (r < 0.25) mobnod[j].getLocationOnScreen().x--; 
        else if (r < 0.50) mobnod[j].getLocationOnScreen().x++; 
        else if (r < 0.75) mobnod[j].getLocationOnScreen().y--; 
        else if (r < 1.00) mobnod[j].getLocationOnScreen().y++; 

        mobnod[j].setLocation(x, y); 
        network.mobiles.get(j).findClosestAP(network.nodes); 
        network.setConnections(); 
        try { 
         threadPool.awaitTermination(1000, TimeUnit.MILLISECONDS); 
        } catch (InterruptedException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 
      } 

     }); 
    } 
    // once you've submitted your last job to the service it should be shut down 
    threadPool.shutdown(); 
    // wait for the threads to finish if necessary 


} 

はあなたが私にしてください助けてもらえますか?

+0

完全なプログラムを投稿して、実行することができますか?また、あなたのforループは無限ループのように思えます、それは意図されていますか? – faizan

答えて

0

ローカルのxとy変数に項目の場所を格納し、次に項目の場所を変更するために乱数を使用しますが、項目の場所をローカルに保存した元のxとyに戻します。多分それは問題ですか?

+1

本当にありがとう、ありがとうございました:) –

関連する問題