int ret; ExecutorService executor = Executors.newFixedThreadPool(1); pdxctw.popupWindow(frame); FutureTask future = new FutureTask( new Callable() { public int call() { return <--- what goes here ? } }); executor.execute(future); ret = pdxctw.getXCTIdx();