interface ReplyCallback void requestCompleted(...) void requestFailed(...) interface Server void request(..., ReplyCallback notify, ...)
class ClientCallback implements ReplyCallback
volatile boolean done = false, succeeded = true
void requestCompleted(...)
done = true
void requestFailed(...)
done = true ; succeeded = false
class Client implements Runnable
void run()
MyCallback mcb = new MyCallback()
server.request(..., mcb)
while (!mcb.done)
do some work
if mcb.succeeded
class Server implements Server
void request(..., ReplyCallback rcb)
do the request
if success
rcb.requestCompleted
else
rcb.requestFailed
t.join() call blocks the caller until
t.isAlive() is false.
class Future
private sema valueReady(0)
private Object value
void putValue(Object o)
value = o
valueReady.signal()
Object getValue(Object o)
valueReady.wait()
return value
class FutureResult
private final future results
object get()
return results.getValue()
Runnable setter(Runnable function)
return new Runnable()
result.put(function.run())
This page last modified on 29 July 2003.