static {
   // initialize the thread pool
   ThreadPoolDefinition def = new ThreadPoolDefinition();
   def.setBounded(true);
   def.setMaxSize(10);
   def.setMinSize(5);
   def.setInitSize(5);
   def.setKeepAliveTime(6000);
   def.setWaitWhenBlocked(true);
   AsynchronousManager.getInstance().initialize(def);
 }
 public Object execute(final JoinPoint joinPoint) throws Throwable {
   AsynchronousManager.getInstance()
       .execute(
           new Runnable() {
             public void run() {
               try {
                 // invoke the intercepted method
                 joinPoint
                     .proceedInNewThread(); // caution: needs to be proceedInNewThread() and not
                 // proceed()
               } catch (Throwable e) {
                 throw new WrappedRuntimeException(e);
               }
             }
           });
   return null;
 }