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

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 に答える
0

呼び出すだけThread.sleep(timeInMillis)で、現在のスレッドが一時停止します。

そう:

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

明らかに、UI スレッドからこれを行うべきではありません。そうしないと、UI 全体がフリーズします...

この単純なアプローチでは、スレッドを中断することによってスレッドを起動することはできないことに注意してください。早期に起動できるようにしたい場合は、起動するObject.wait()必要があるコードにアクセスできるモニターで使用できます。そのコードを使用Object.notify()して、待機中のスレッドを起動できます。Condition(または、またはなどの高レベルの抽象化を使用しますSemaphore。)

于 2012-07-09T06:01:26.767 に答える