2016-08-05 7 views
1

저는 일종의 투표를합니다. 매 1 초마다 read()이라고 부르며 값을 받고 inform(value) (후드 아래 LocalBroadcastManager)을 통해 보냅니다. readSubs.unsubscribe();은 다음 투표가 이전 읽기보다 빠를 경우를 대비해 작성되었습니다. 로그 캣에스레드 이름이 4 자리 숫자 접미사 (예 : RxNewThreadScheduler-1009)가되면 정상입니까?

public void read(){ 
    readSubs.unsubscribe(); 
    readSubs = connection.read() 
        .subscribe(new Action1<Integer>() { 
         @Override 
         public void call(Integer value) { 
          Log.d(LOG_TAG, "read " + value); 
          inform(value); 
         } 
        }); 
} 

public void inform(Integer value) { 
    Log.d(TAG, "informed " + value + " on thread " + Thread.currentThread().toString()); 
    broadcaster.newValue(value); //broadcaster extends LocalBroadcastManager 
} 

I 관찰자

informed value 70 on thread Thread[RxNewThreadScheduler-1009,5,main] 

은 지금까지 나는 RxNewThreadScheduler-1009에 스레드 이름을 얻을 그것은 성장하고. 내 질문 :

  1. 스레드 이름이 4 자리 이름 접미사가되면 정상입니까?
  2. 실제로 1009 개의 스레드가 있음을 의미합니까?

답변

0

1) 이는 우연히 Schedulers.io()을 사용해야한다는 것을 나타냅니다.

2) 아니요, 응용 프로그램을 시작할 때부터 많은 스레드가 시작되었다는 의미입니다.

+0

다음을 추가 할 수 있습니까? 왜 Schedulers.io()를 사용해야합니까? –

+0

io()는 쓰레드를 재사용하며 그 인덱스는 그 프로세스에서 운영체제의 핸들러에 커다란 저장을하지 않아야합니다. – akarnokd

+0

실제로 Schedulers.io()에서 스레드 이름은 대부분 RxIoScheduler-2입니다. Schedulers.io()의 동작에 대한 설명서는 어디에서 찾을 수 있습니까? –