0
ExecutorService exec = Executors.newFixedThreadPool(8);
List<Future<Object>> results = new ArrayList<Future<Object>>();

// submit tasks
for(int i = 0; i < 8; i++) {
    results.add(exec.submit(new ThreadTask()));
}

...

// stop the pool from accepting new tasks
exec.shutdown();

// wait for results
for(Future<Object> result: results) {
    Object obj = result.get();
}


class ThreadTask implements Callable<Object> {

    public Object call() {
        // execute download
        //Inside this method I need to pause the thread for several seconds
        ...
        return result;
    }
}

如评论中所示,我需要将线程暂停几秒钟。希望你能帮我解决这个问题。

谢谢你的时间!

4

2 回答 2

0

只需调用Thread.sleep(timeInMillis)- 这将暂停当前线程。

所以:

Thread.sleep(5000); // Sleep for 5 seconds

显然,您不应该从 UI 线程执行此操作,否则您的整个 UI 将冻结...

请注意,这种简单的方法不允许通过中断线程来唤醒其他线程。如果您希望能够早点唤醒它,您可以Object.wait()在任何需要唤醒它的代码都可以访问的监视器上使用它;该代码可以Object.notify()用来唤醒等待线程。(或者,使用更高级别的抽象,例如ConditionSemaphore。)

于 2012-07-09T06:01:26.767 回答
0

你可以实现一个新线程,它不是 UI 线程..

像这样的东西可能会为你做..

class ThreadTask implements Callable<Object> {

public Object call() {
Thread createdToWait= new Thread() {
        public void run() {
                    //---some code

                    sleep(1000);//call this function to pause the execution of this thread

                    //---code to be executed after the pause
        }
    };
    createdToWait.start();
 return result;
}
于 2012-07-09T07:15:35.173 回答