In WebLogic 11g the possible status of a thread is:
- Standby (i.e. in a pool where threads non currently needed are put by WebLogic)
- Idle (ready to take a new request)
- Active (a request is executing)
- Hogging (request is taking too much time to execute)
- Stuck (the configured StuckThreadMaxTime is exceeded)
So I think that in your count you are missing "Active" and "Stuck" threads. Unfortunately these counters seems not available in weblogic.management.runtime.ThreadPoolRuntimeMBean
so you'll have to find the counter by yourself (maybe iterating on the thread list...).
See also WebLogic 11g (10.3.6) admin console - servers,monitoring,threads.
From my experience all the ready-to-use counters can be affected by problems and get wrong data, especially when the system is experiencing other issues (exceptions, errors, ...): as you may understand and error condition or a bug may cause a wrong update in a counter.