Comment #1 on issue 763 by [email protected]: something is weird, using thread pool in AOP
http://code.google.com/p/google-guice/issues/detail?id=763

Description of the issue:
using thread pool in AOP: fixedPool.submit
there is weird that fixedPool.submit called a lots times



Steps to reproduce:
let:

final ExecutorService fixedPool = Executors.newFixedThreadPool(10);

@AsyncDBCall
public void ssss(){
        System.out.println("ssss");
}

when calling:

@Test
public void aa2222(){
        instance.ssss();
}


if I wrote a interceptor (1) or (2), I got:
AsyncDBCall1
AsyncDBCall2
AsyncDBCall1
AsyncDBCall2
AsyncDBCall1
AsyncDBCall2
AsyncDBCall1
AsyncDBCall2
AsyncDBCall1
...
AsyncDBCall2
AsyncDBCall1
AsyncDBCall2
AsyncDBCall1
AsyncDBCall2
AsyncDBCall1
AsyncDBCall2
ssss11


(1) bindInterceptor(Matchers.any(), Matchers.annotatedWith(AsyncDBCall.class), new MethodInterceptor() {
            @Override
public Object invoke(final MethodInvocation invocation) throws Throwable {
                System.out.println("AsyncDBCall1");
                return fixedPool.submit(new Callable<Object>() {
                    @Override
                    public Object call() throws Exception {
                        try {
                            System.out.println("AsyncDBCall2");
                            return invocation.proceed();
                        } catch (Throwable throwable) {
                            throw Throwables.propagate(throwable);
                        }
                    }
                });
            }
        });


(2) bindInterceptor(Matchers.any(), Matchers.annotatedWith(AsyncDBCall.class), new MethodInterceptor() {
        @Override
        public Object invoke(final MethodInvocation invocation) throws 
Throwable {
                System.out.println("AsyncDBCall1");
                fixedPool.submit(new Runnable() {
                        @Override
                        public void run() {
                                try {
                                        System.out.println("AsyncDBCall2");
                                        invocation.proceed();
                                } catch (Throwable throwable) {
                                        throw Throwables.propagate(throwable);
                                }
                        }
                });
                return null;
        }
});


using:
/usr/lib/jvm/java-6-openjdk-amd64/bin/java


Attachments:
        sql.txt  2.0 KB

--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

--
You received this message because you are subscribed to the Google Groups 
"google-guice-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice-dev.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to