Android线程池管理多个蓝牙handeling线程?

所以我有我的Android蓝牙应用程序,它有主机和客户端。 问题是,因为我正在进行多个连接,所以我需要一个线程来处理每个连接。 这都是milk’n’cookies,所以我想我会把所有线程都放在一个数组中。 一个小小的研究表明,更好的方法是使用线程池,但我似乎无法理解其工作原理。 此外,它实际上甚至可以在一个数组中保存线程吗?

线程池是围绕这样的想法构建的,因为一次又一次地创建线程非常耗时,我们应该尝试尽可能地回收它们。 因此,线程池是执行作业的线程集合,但在完成作业时不会被销毁,而是“返回池”并且如果没有任何事情可以执行其他工作或闲置。

通常,底层实现是一个线程安全的队列,程序员在其中放置作业,并且由实现管理的一堆线程保持轮询(我并不一定意味着忙于旋转)队列的工作。

在Java中,线程池由ExecutorService类表示,它可以是:

  • 修复 – 创建具有固定数量线程的线程池
  • 缓存 – 根据需要动态创建和销毁线程
  • single – 具有单个线程的池

请注意,由于线程池线程以上述方式运行(即被回收),因此在固定线程池的情况下,不建议使用阻塞I / O操作的作业,因为执行这些作业的线程将是有效地从池中删除,直到他们完成工作,因此您可能会遇到死锁。

至于线程数组,它就像创建任何对象数组一样简单:

 Thread[] threads = new Thread[10]; // array of 10 threads