理论上来说,如果你全用threadgroup来跑线程的话,有个叫enumerate的方法可以得到【该threadgroup下】所有active的(也就是你说的在工作的)线程以及子线程,但程序里面不一定是把线程放threadgroup里面的,有可能有人自己new一个出来run或者别的,所以不能完全依靠这个办法。我目前想到的办法,貌似得弄个全局的counter,开个守护线程,让这个线程去数监控所有线程的状态,依照线程是否Active去加减这个counter。
还有个懒点的,你看windows的taskmanager(假设你在win平台上的话),里面有一个column叫做thread count的,我没试过到底准不准,不过这个最省事了,右键点出来一看就知道了。