어떻게 하면 마켓처럼 빠르게 이미지를 받을수 있을까요...?
마켓처럼 여러개의 이미지를 뿌리면 전 엄청 늦던데요...
받는속도를 향상시킬수 있는 방법좀 알려주시면 감사하겠습니다!
맛폰으로 타이핑 하려니 오타가 있을수 있습니다 ㅜㅜ
abstract class Reader implements Runnable{
// 작업할 경로가 저장될 큐(스레드동기화가 지원됩니다)
blockingqueue queue=new linkedblockingqueue();
@override
public void run(){
for(;;){
string path=queue.poll(); // 큐에서 먼저들어온 값을 하나 빼는작업(하나가져오면서 큐에서는 삭제됩니다)
if(path==null) break; // 큐가 비었다면 null반환하고 반복문종료(=run메서드 끝=스레드 종료)
// 큐에서 빼낸 패스로 파일 읽기 작업
...
// 파일하나 다 읽었다면
callback(읽은파일);
}
}
abstract void callback(읽은파일);
}
메인스레드에서(액티비티라던지 서비스라던지)
reader r=new reader(){
@override
void callback(읽은파일){
// 메인스레드의 함수로 파일을 전달하거나 핸들러 등으로 메인ui에 직접표시하세요
인자로 전달된 파일을 보여준다던가 하는 작업
}
};
r.queue.offer(값);
...읽을만큼 저장
new thread(r).start();
...원하는만큼 스레드 생성
일단 지금 컴앞이 아니라서 듬성듬성 썼습니다
요점은 스레드를 여러개 만들지만 인자로 넣는 runnable클래스는 한개만 만드는 겁니다
하나의 작업을 여러스레드가 같이하는거죠




제가 해봤던 방법은 멀티스레드로 파일을 받아오시면 좀더 빨리 받아오실수 있습니다
runnable구현한 클래스에
스레드 동기화가 지원되는 blockingqueue를 멤버필드로 선언해서 클래스를 하나 생성해서(runnable을 구현한 클래스) 읽어올 파일정보를 큐에저장한뒤
큐에서 값을 하나씩 빼와서 파일을 읽어오는 run메서드를 구현하고
여러개의 thread를 생성할때 앞에서 생성한 runnable을 구현한 클래스를 인자로 넣어서 멀티스레드로 읽어들이는 방법이 있습니다'