Hi Marco,
Thanks for your quick and valuable response

.
Actually i am using Future , Callable in Cache implementation.
I am using map as a cache which can be searched instead of going to particular implementations.
Code is as below :
In Memoizer3 particularly in compute(A) . Here if value is not in cache then cretea it and put it in cache otherwise if value was already there in cache then directly take that value.
There can be a case where first thread passes the check that value is not in cache and tries to get it from actual implementation , and in the mean time i have some other thread which also try to access the same code .Now there can be possibility that second thread which is querying for the same A object but since we didn;t reached a point where we add required value in cache map during first thread execution
This will lead to case where value is not present in map but it is in the process of being added .So this will actually lead to a case where values will be taken from direct implementation instead of cache, which is not correct .
ie :
t1 => compute(A1);
t2 => compute(A1);
So in this context i want to know will future.get save us from it ?
[Above complete code can be found at Java Concurrency in Practice Pgno-74 ebook]