【问题标题】:running a method asychronously异步运行方法
【发布时间】:2016-06-22 11:09:19
【问题描述】:

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

我的错误是什么?

【问题讨论】:

    标签: android loops ping asynchronous


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-04-15
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多