If you have an application with response time requirements and one without, I think that deploying them on separate instances is the best idea. Even if you had separate thread pools, there are many other shared resources which mean one could affect the other (heap space, data source connection pools etc).
Do the applications respond to requests on the same port; that is http://example.com/app1 and http://example.com/app2? If so, then there isn't going to be an easy configuration way to do it. This is because a thread is needed to start processing the request before it knows which application it is going to.
If they are on separate ports, then you should be able to configure different thread pools for each HTTP/AJP connector.
The http threads are not our problem. Both deployments using EJB Async annotation. If the slower application consumed all threads because of a lot of async calls waiting to being processed, then sometimes no thread is left in the other application in the required time for their async calls.
I saw that I can define a separate thread pool for async calls but I did not find any means to define separate EJB thread Pools for each deployment.