2009-09-11 6 views
2

검은 딸기 개발에 문제가 있습니다. 내 응용 프로그램에서는 서버에서 이미지를 가져와야하므로 서버에서로드하는 각 이미지마다 별도의 연결 스레드를 만들어야합니다.하지만 이렇게하면 TooManyThreadsException..Any 아이디어가 스레드 제어와 관련이 있습니다.스레드가 너무 많습니다. 예외

16 개 스레드의 최대 동시에 실행 할 수 있습니다 응용 프로그램 블랙 베리에서

...하지만 난 한 번에 16 개 이상의 이미지를 표시해야 ...

+0

bb sdk에서 BrowserFieldDemo를 살펴보면 유용 할 수 있습니다. –

답변

5

재사용 스레드, 모든 이미지를 대기열 및 실행 한 번에 하나씩 이미지를 처리 ​​한 후 다음 이미지로 넘어가는 단 두 개의 스레드.

장치가 프로세스 당 16 개 밖에 허용하지 않는 이유가 있으며 리소스와 관련이 있습니다. 기본적으로 적은 스레드로 작업을 수행해야합니다.

+0

하지만 실제로 직면하는 문제는 스레드가 뒤로 버튼을 눌렀을 때 파괴되지 않는다는 것입니다. 나는이 스레드가 곧 실행을 멈추길 원합니다. 다시 버튼을 누르십시오 ...이 스레드는 화면을 종료하더라도 백그라운드에서 계속 실행됩니다 ... – tek3

+3

@NGA, 스레드 풀을 사용하십시오. 그렇다면 쓰레드를 생성/파괴 할 필요가 없습니다. 어떤 종류의 인터 스레드 메시징 시스템을 사용하여 뒤로 버튼을 눌렀을 때 스레드에게 신호를 보내 그들이 수행중인 것을 멈출 수있게합니다. – Glen

1

도메인 당 2 개의 동시 연결로 제한하는 IE6과 같은 구형 브라우저에서 비슷한 제한이 있습니다.

스레드를 다시 사용하고 적은 수의 동시 스레드에서 이미지를 연속적으로 다운로드하십시오 (속도를 높이기 위해 2-3 스레드 사용).

그냥 여기에 추측하지만 모든 16 스레드를 묶는 것은 BB OS가 프로그램이 실행되는 동안 다른 일을하기 때문에 불안정한 환경으로 이어질 수있는 것처럼 보입니다.

1

나는 스레드를 동적으로 생성하는 것이 결코 좋은 접근 방법이 아니라는 것을 알았습니다. 저에게 작업을 수행 할 큐가있는 1-2 개의 작업자 스레드를 생성했을 것입니다.

관련 문제