Chcę zaplanować to samo polecenie równoleglemoda za pomocą usługi executora w Javie. Napisałem wrapper nad executorem puli wątków, który bierze równoległe liczenie, aby zaplanować polecenie jako parametr, aw pętli for planuje polecenie (tj. Tę samą instancję wiele razy).
Czy to podejście jest prawidłowe? Czy jest jakiś sugerowany sposób na zrobienie tego? Używam wiosny do stworzenia tych ziaren.
Odpowiedzi:
3 dla odpowiedzi № 1Możesz użyć ScheduledExecuterService
następująco:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorTest {
private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
public static void main(final String[] args) throws InterruptedException {
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
System.out.println("executed");
}
}, 0, 1, TimeUnit.SECONDS);
Thread.sleep(10000);
scheduler.shutdownNow();
}
}
Spowoduje to wykonanie run
Metoda co sekundę zaczyna się natychmiast.
Dzięki takiemu podejściu możesz dodać go wiele razy do scheduledExecuterService
:
Runnable command = new Runnable() {
public void run() {
System.out.println("executed");
}
};
scheduler.scheduleAtFixedRate(command, 0, 1, TimeUnit.SECONDS);
scheduler.scheduleAtFixedRate(command, 0, 1, TimeUnit.SECONDS);