JBoss AS 7 users and WildFly can use JConsole in order to monitor the usage of the application server. See the following snapshot:
You can use the operations such as get ThreadCpuTime(Thread) to gather information for a particular thread:
JBoss AS 4/5/6 users
If you want to inspect jBoss Thread CPU's usage you have a shortcut from the jmx-console. Point at the Mbean ServerInfo under the domain jboss.system.
This is a shortcut if you're running your server on localhost:
now invoke the operation listThreadCpuUtilization()
|Thread Name||CPU (milliseconds)|
Here you can see which threads are pumping the cpu - have a look, besides the threads dedicated to the web applications (running on port 8080) you are using quite a lof of cpu for the ScannerThread which is responsible of period based scanning for the Deployment of applications.
Sure you need to enable Deployment Scanning ? in production enviroment you had better disabling it:How to configure JBoss to disable hot deployment ?