基本上 - 我们编写单元测试。有时这些单元测试会启动线程 - 并且通常会在线程池上启动任务。如果后台线程出现问题 - 它可能会导致未来测试出现奇怪的问题。我们想要在每个测试的基础拆解上做的基本上是
- 检查正在运行的线程
- 如果有任何不应该在运行的测试失败
现在,对于普通线程,我们可以事先枚举,然后进行比较——这很好。线程池把事情搞砸了——因为可能已经有效地创建了许多新线程,它们只是在等待无所事事——这很好。如果测试让某些东西在运行,那就不好了。还要记住 - 我不是在编写测试或正在测试的代码 - 我正在编写底层库,以确保没有其他人可以把事情搞砸,无论他们多么努力 - 所以我不能尝试使用我自己的实现一个线程池或类似的东西,因为我不能确定有人没有使用标准的。
谁能想到一种方法来判断线程池拥有哪些线程,以及它们是否处于空闲状态?我的下一步是通过反射查看私有变量 - 但我希望有人有更好的方法?
谢谢,达伦