실행 가능 서비스가 executor 서비스 (무제한 큐를 가지는 단일 thread)에 송신 된 후에 실행 가능한 객체를 변경할 수 있습니까? 예를 들어실행 가능 객체가 ExecutorService에 제출 된 후 실행 가능 객체를 수정 하시겠습니까?
:
우리가 실행 가능한 오브젝트를 제출하는 경우, 위의 예에서 볼 수 있으며 루프 내에서 너무 객체의 내용을 수정할 수 있듯이public class Test {
@Autowired
private Runner userRunner;
@Autowired
private ExecutorService executorService;
public void init() {
for (int i = 0; i < 100; ++i) {
userRunner.add("Temp" + i);
Future runnerFuture = executorService.submit(userRunner);
}
}
}
public class Runner implements Runnable {
private List<String> users = new ArrayList<>();
public void add(String user) {
users.add(user);
}
public void run() {
/* Something here to do with users*/
}
}
, 1은 서비스가를 사용 집행하기 위해 제출 새로 추가 된 사용자. run 메소드가 매우 집중적 인 작업을 수행하고 후속 제출이 대기 중임을 고려하십시오.