2016-08-05 9 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 
} 

Я наблюдатель от LogCat что

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()? –

 Смежные вопросы

  • Нет связанных вопросов^_^