Android 및 Java를 처음 사용합니다. 1000 개 이상의 이미지를 다운로드하려고합니다. 느리게 진행될 것이므로 UI
스레드에서이를 순차적으로 수행하고 싶지 않습니다. 따라서, 아래의 방식으로 thread와 runnable을 사용하여 multi-threading
을 구현했습니다.Android에서 멀티 스레딩
for 루프는 1000 더하기라고합니다. 그래서 그것을 달성하는 효율적인 방법입니까? OS
은 자체적으로 스레드 풀을 관리합니까?
private void syncS3Data() {
tStart = System.currentTimeMillis();
try {
for (final AWSSyncFile f : awsSyncData.getFiles()) {
new Thread(new Runnable() {
@Override
public void run() {
beginDownload(f);
}
}).start();
}
} catch (Exception ex) {
progressDialog.dismiss();
showMessage("Error:" + ex.getStackTrace().toString());
}
}
Java의 솔루션을 구현하여 특정 양의 실행 파일 만 동시에 실행할 수 있습니다. Android에서는 특정 구현이 있는지 모릅니다. [newFixedThreadPool] (https : // docs.)와 같이 [스레드 풀] (https://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html) (전체 주제가 읽기 좋습니다)을 참조하십시오. oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool-int-) – AxelH
많은 양의 데이터가있을 때 페이지 매김 기능을 사용하는 것이 좋습니다. asynctask –
을 사용할 수 있습니다. 이미지 만 다운로드하려는 경우. 'glide' 라이브러리를 사용할 수도 있고 그렇게하기위한 라이브러리가 많이 있습니다. 그냥 구글. – Sunny