运行 异步方法

running a method asychronously

我想发现我的本地网络,我需要 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 秒的时间。

我的错误是什么?

AsyncTask在后台使用线程池,默认值为5。所以最多5个线程会运行并行。您可能需要查看 managing your own thread pool