Android один поток может обрабатывать несколько сокетов? - PullRequest
1 голос
/ 23 апреля 2020

В моем Android проекте мне нужно создать несколько клиентских сокетов на одноранговых узлах и поддерживать соединение активным до тех пор, пока я не получу указанное c сообщение. (один сокет на одноранговый узел, и мы говорим о 100 сокетах, поэтому создание 100 потоков - это слишком много)

На данный момент я создаю один поток на сокет, но я думаю, что это слишком много для устройства, потому что у меня запущено это сообщение быстро:

2020-04-23 13:51:31.539 29982-30306/application: Waiting for a blocking GC Alloc
2020-04-23 13:51:31.541 29982-30216/application: Waiting for a blocking GC Alloc
2020-04-23 13:51:31.550 29982-30306/application: WaitForGcToComplete blocked Alloc on ProfileSaver for 11.793ms
2020-04-23 13:51:31.550 29982-30306/application: Starting a blocking GC Alloc
2020-04-23 13:51:31.551 29982-30216/application: WaitForGcToComplete blocked Alloc on ProfileSaver for 9.578ms

Есть ли способ, которым поток может обрабатывать несколько сокетов, чтобы избежать слишком большого количества потоков на устройстве?

Может быть, Kotlin сопрограммы могут помочь здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...