Executableサービス(アンバウンド・キューを持つシングル・スレッド)に実行可能オブジェクトをサブミットした後、その実行可能オブジェクトを変更できますか?例えば実行可能オブジェクトを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*/
}
}
、第一、サービスが使用エグゼキュータして提出します新しく追加されたユーザー。 runメソッドが何かを本当に集中的に実行しており、その後のサブミットがキューに入れられていると考えてください。