2016-06-22 12 views
1

私のローカルネットワークを発見したいと思います。私はすべてのクライアントにpingする必要があります!それは時間がかかること!だから私はいくつかのスレッドでこれをより速くするためにping処理を実行したい。これは私の試行です:非同期にメソッドを実行する

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // For example 
    // host = "192.168.1."; 

    for (int i = 1; i < 255; i++) { 

     String ip = host + i; 

     new Pinging().execute(ip); 
    } 
} 


private class Pinging extends AsyncTask<String, String, Void> { 

    @Override 
    protected Void doInBackground(String... params) { 

     String ipAddress = params[0]; 

     Log.d("test", "Pingng " + ipAddress); 

     // Ping method 

     return null; 
    } 

} 

私は254のスレッドが作られ、非同期的に仕事をすることを期待しています!
しかし、残念ながらforのループコマンドは〜254 * 3秒かかる。

私の間違いは何ですか?

答えて

1

AsyncTaskは、バックグラウンドでスレッドプールを使用し、デフォルト値は5です。したがって、最大5つのスレッドが並行して実行されます。あなたはおそらくmanaging your own thread pool

を見なければなりません
関連する問題