내 프로그램에서 새 값이 트리거 될 때마다 많은 수의 수신기를 업데이트하는 클래스를 작성했습니다. 그 때문에 나는 SingleThreadExecutor
을 사용하고 있는데, 예제가 더 명확해야합니다. 나는 약 걱정하고 무엇을, 나는 그런 식으로 실행할 때 이해하지 :ExecutorService를 사용하는 가장 효과적인 방법
Class Update() {
ExecutorService svc = Executors.newSingleThreadExecutor();
svc.execute(new Runnable() {
public void run() {
if(!theListeners.isEmpty()) {
for(IgpsdListener l : theListeners) {
l.update(jsonObject);
}
}
}
});
내가 들어, 스레드를 생성하는 자바에서 매우 비싼 작업이다, 그래서 제대로 사용하고 있는지 궁금하고있다. 내 말은, 때마다 새로운 Runnable
개체를 만듭니다? Executor조차도 유일한 스레드만을 사용합니다.
도움과 계발에 대해 미리 감사드립니다. nyyrikki
내가 외부에하면 실행'경우 (! theListeners.isEmpty())'이동합니다 :
이이 단순화 될 수있다(). 아무 것도하지 않는 작업을 추가 할 필요가 없습니다. 나는 당신이 당신의 집행자를 재사용하고 각 작업마다 하나도 만들지 않는다고 가정합니다. –
실행 프로그램은 한 번만 작성되며 올바른 것입니다. 당신이 말한 것은 완전히 이해가됩니다. 만약'if()'를'execute()'밖에서 움직이면 이벤트는 리스너가 이벤트에 등록하지 않은 경우에도 실행되지 않을 것입니다. 못 봤어, 고마워. 고마워! – nyyrikki