을 완료 호출자 스레드를 알리기 위해 , 새로운 인터페이스/수신기 클래스를 만들지 않고?어떻게 ExecutorService를 주 스레드에서 작업
신호가 발신자 스레드에서 방출 될 수 있으면 보너스 포인트.
을 완료 호출자 스레드를 알리기 위해 , 새로운 인터페이스/수신기 클래스를 만들지 않고?어떻게 ExecutorService를 주 스레드에서 작업
신호가 발신자 스레드에서 방출 될 수 있으면 보너스 포인트.
반환되는 Future 개체의 get()을 차단하거나 isDone() 메서드를 폴링 할 수 있습니다. 또는 ListenableFuture이있는 google 구아바 라이브러리를 사용할 수 있습니다.
나는 계산이 완료 될 때까지 get()을 막을 것이라고 확신한다. –
구현이 확실하지 않고 동시에 실행될 스레드 수가 너무 많아서 작동하지 않을 수 있습니다. 당신이 살펴볼 수있는 한가지는 runnable 자체가 필요한 UI 컴포넌트를 업데이트하는 방법을 알고있는 메소드를 호출함으로써 완료되었음을 알리는 것입니다.
future.get()을 사용하면 호출자 스레드가이를 완료했는지 의식적으로 호출해야합니다. 내 응용 프로그램의 호출자 스레드는 어떤 블로킹 작업도 할 수없는 UI 스레드 일 수 있지만 뷰를 새로 고칠 때 일종의 업데이트를 받아야합니다. – garbagecollector
완료되면 실행되도록 UI 스레드에 작업을 제출해야합니다. UI 스레드의 이벤트 루프가 작업을 선택하여 실행합니다. 또는'isDone'가'true'를 리턴 할 때까지 정기적으로 미래를 폴링하기 위해 UI 스레드에서 되풀이 작업을 스케줄링 할 수 있습니다. –