运行 异步方法
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
我想发现我的本地网络,我需要 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