2016-06-22 2 views
1

내 로컬 네트워크를 찾고 싶습니다. 그리고 모든 클라이언트에 핑을해야합니다! 그것은 시간이 걸린다! 그래서 나는이 작업을 더 빠르게하기 위해 여러 스레드에서 ping 프로세스를 실행하려고합니다. 이것은 내 시도입니다 :asyncronously 메서드를 실행

@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

을 봐야 할 것입니다.
관련 문제