fork(2) download
  1.  
  2. import static java.util.concurrent.TimeUnit.MILLISECONDS;
  3.  
  4. import java.util.concurrent.Executors;
  5. import java.util.concurrent.ScheduledExecutorService;
  6. import java.util.concurrent.locks.LockSupport;
  7.  
  8. public class Main {
  9. public class Scheduler {
  10. int initialDelay = 500, interval = 1000, timeout = 4000;
  11.  
  12. public void scheduleFunction(Runnable function) {
  13. final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
  14. scheduler.scheduleAtFixedRate(function, initialDelay, interval, MILLISECONDS);
  15. scheduler.schedule(() -> scheduler.shutdown(), timeout, MILLISECONDS);
  16. try {
  17. scheduler.awaitTermination(Long.MAX_VALUE, MILLISECONDS);
  18. } catch (InterruptedException ex) {
  19. Thread.currentThread().interrupt();
  20. }
  21. }
  22. }
  23.  
  24. Scheduler scheduler = new Scheduler();
  25.  
  26. public void sendToKafka() {
  27. scheduler.scheduleFunction(this::produce);
  28. }
  29.  
  30. void produce() {
  31. System.out.println("produce()");
  32. LockSupport.parkNanos(1_500_000_000);
  33. System.out.println("produce() end");
  34. }
  35.  
  36. public static void main(String[] args) {
  37. new Main().sendToKafka();
  38. System.out.println("main end");
  39. }
  40. }
  41.  
Success #stdin #stdout 0.08s 50848KB
stdin
Standard input is empty
stdout
produce()
produce() end
produce()
produce() end
produce()
produce() end
produce()
produce() end
main end