public void run()

in resolver/src/main/java/org/apache/james/jspf/impl/DNSServiceAsynchSimulator.java [91:134]


    public void run() {
        while (true) {
            Request req;
            synchronized (queue) {
                if ( (queue.size() - waitingThreads <= 0) ) {
                    try {
                        waitingThreads++; queue.wait();
                    } catch (InterruptedException e) {
                        Thread.interrupted();
                    }
                    waitingThreads--;
                }
                req = (Request) queue.removeFirst();
            }
            
            Runnable runnable = new Runnable() {

                private Request req;

                public void run() {
                    IResponseImpl response;
                    try {
                        response = new IResponseImpl(req.getId(), dnsService.getRecords(req.getValue()));
                    } catch (TimeoutException e) {
                        response = new IResponseImpl(req.getId(), e);
                    }

                    req.getResponseQueue().insertResponse(response);
                }

                public Runnable setRequest(Request req) {
                    this.req = req;
                    return this;
                }
                
            }.setRequest(req);
            
            if (multiThread) {
                new Thread(runnable).start();
            } else {
                runnable.run();
            }
        }
    }