2012-07-09 2 views
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; 
    } 
} 

위의 주석에 표시된 것처럼 몇 초 동안 스레드를 일시 중지해야합니다. 희망을 가지고 나를 도울 수 있기를 바랍니다.Android : 몇 초 동안 스레드 잠시 멈춤

시간 내 주셔서 감사합니다.

답변

0

그냥 Thread.sleep(timeInMillis)으로 전화하면 현재 스레드가 일시 중지됩니다.

그래서 : 분명히

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

당신은 ... UI를 스레드, 또는 동결 전체 UI에서이 간단한 접근 방식에 스레드를 허용하지 않습니다

참고이 작업을 수행해서는 안 그것을 방해함으로써 깨우침을 받으십시오. 조기에 깨울 수 있기를 원하면, 모니터에서 Object.wait()을 사용할 수 있습니다.이 모니터는 깨어 있어야하는 코드에 액세스 할 수 있습니다. 그 코드는 대기 스레드를 깨우기 위해 Object.notify()을 사용할 수 있습니다. (또는, 같은 Condition 또는 Semaphore 같은 높은 수준의 추상화를 사용합니다.)

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; 
} 
관련 문제