Java 类com.google.common.util.concurrent.AbstractScheduledService 实例源码

项目:Mastering-Mesos    文件:DbModule.java   
@Override
protected void configure() {
  install(new PrivateModule() {
    @Override
    protected void configure() {
      bind(RowGarbageCollector.class).in(Singleton.class);
      bind(AbstractScheduledService.Scheduler.class).toInstance(
          AbstractScheduledService.Scheduler.newFixedRateSchedule(
              0L,
              DB_ROW_GC_INTERVAL.get().getValue(),
              DB_ROW_GC_INTERVAL.get().getUnit().getTimeUnit()));
      expose(RowGarbageCollector.class);
    }
  });
  SchedulerServicesModule.addSchedulerActiveServiceBinding(binder())
      .to(RowGarbageCollector.class);
}
项目:cultivar    文件:RegistrationServiceModuleBuilder.java   
/**
 * Set the bound instance to update from the provider at a certain delay.
 * 
 * @param time
 *            The amount of time to spend before the first registration and between registrations.
 * @param unit
 *            The time unit for time.
 * @param service
 *            An optional ScheduledExecutorService. By default this will be an exitingScheduledExecutorService with
 *            default parameters.
 */
@SuppressWarnings("unchecked")
public RegistrationServiceModuleBuilder<T> updating(@Nonnegative final long time, final TimeUnit unit,
        final ScheduledExecutorService service) {
    checkArgument(time > 0, "Time must be positive.");
    checkNotNull(unit, "TimeUnit must not be null.");
    checkNotNull(service, "Provided executor service must not be null.");

    scheduler = AbstractScheduledService.Scheduler.newFixedDelaySchedule(time, time, unit);

    executorService = service;

    bindType = UpdatingRegistrationService.class;

    return this;
}
项目:curator-extensions    文件:LeaderServiceTest.java   
@Test
public void testSelfStoppingService() {
    // If the delegate service stops itself then it gets restarted after reacquireDelay.
    int reacquireDelayMillis = 1500;
    ServiceTriggers triggers1 = new ServiceTriggers();
    ServiceTriggers triggers2 = new ServiceTriggers();
    LeaderService leader = newLeaderService(reacquireDelayMillis, TimeUnit.MILLISECONDS, supply(
            triggers1.listenTo(new AbstractScheduledService() {
                @Override
                protected void runOneIteration() throws Exception {
                    stopAsync();
                }

                @Override
                protected Scheduler scheduler() {
                    return Scheduler.newFixedDelaySchedule(10, 10, TimeUnit.MILLISECONDS);
                }
            }),
            triggers2.listenTo(new NopService())));
    leader.startAsync();

    assertTrue(triggers1.getRunning().firedWithin(1, TimeUnit.MINUTES));
    assertTrue(triggers1.getTerminated().firedWithin(1, TimeUnit.MINUTES));
    assertTrue(triggers2.getRunning().firedWithin(1, TimeUnit.MINUTES));
}
项目:incubator-omid    文件:LeaseManager.java   
@Override
protected Scheduler scheduler() {

    final long guardLeasePeriodInMs = leasePeriodInMs / 4;

    return new AbstractScheduledService.CustomScheduler() {

        @Override
        protected Schedule getNextSchedule() throws Exception {
            if (!haveLease()) {
                // Get the current node version...
                Stat stat = zkClient.checkExists().forPath(leasePath);
                leaseNodeVersion = stat.getVersion();
                LOG.trace("{} will try to get lease (with Ver. {}) in {}ms", tsoHostAndPort, leaseNodeVersion,
                          leasePeriodInMs);
                // ...and wait the lease period
                return new Schedule(leasePeriodInMs, TimeUnit.MILLISECONDS);
            } else {
                long waitTimeInMs = getEndLeaseInMs() - System.currentTimeMillis() - guardLeasePeriodInMs;
                LOG.trace("{} will try to renew lease (with Ver. {}) in {}ms", tsoHostAndPort,
                          leaseNodeVersion, waitTimeInMs);
                return new Schedule(waitTimeInMs, TimeUnit.MILLISECONDS);
            }
        }
    };

}
项目:eyeballs    文件:MotionEventProcessor.java   
public Builder addMotionEventConsumer(MotionEventConsumer motionEventConsumer) {
    if (motionEventConsumer instanceof Service) {
        AbstractScheduledService consumer = (AbstractScheduledService) motionEventConsumer;
        if (!consumer.isRunning()) {
            consumer.startAsync();
        }
    }
    this.motionEventConsumers.add(motionEventConsumer);
    return this;
}
项目:Mastering-Mesos    文件:PreemptorModule.java   
@Override
protected void configure() {
  install(new PrivateModule() {
    @Override
    protected void configure() {
      if (enablePreemptor) {
        LOG.info("Preemptor Enabled.");
        bind(PreemptorMetrics.class).in(Singleton.class);
        bind(PreemptionVictimFilter.class)
            .to(PreemptionVictimFilter.PreemptionVictimFilterImpl.class);
        bind(PreemptionVictimFilter.PreemptionVictimFilterImpl.class).in(Singleton.class);
        bind(Preemptor.class).to(Preemptor.PreemptorImpl.class);
        bind(Preemptor.PreemptorImpl.class).in(Singleton.class);
        bind(new TypeLiteral<Amount<Long, Time>>() { })
            .annotatedWith(PendingTaskProcessor.PreemptionDelay.class)
            .toInstance(preemptionDelay);
        bind(BiCacheSettings.class).toInstance(
            new BiCacheSettings(PREEMPTION_SLOT_HOLD_TIME.get(), "preemption_slot_cache_size"));
        bind(new TypeLiteral<BiCache<PreemptionProposal, TaskGroupKey>>() { })
            .in(Singleton.class);
        bind(PendingTaskProcessor.class).in(Singleton.class);
        bind(ClusterState.class).to(ClusterStateImpl.class);
        bind(ClusterStateImpl.class).in(Singleton.class);
        expose(ClusterStateImpl.class);

        bind(PreemptorService.class).in(Singleton.class);
        bind(AbstractScheduledService.Scheduler.class).toInstance(
            AbstractScheduledService.Scheduler.newFixedRateSchedule(
                0L,
                slotSearchInterval.getValue(),
                slotSearchInterval.getUnit().getTimeUnit()));

        expose(PreemptorService.class);
        expose(PendingTaskProcessor.class);
      } else {
        bind(Preemptor.class).toInstance(NULL_PREEMPTOR);
        LOG.warn("Preemptor Disabled.");
      }
      expose(Preemptor.class);
    }
  });

  // We can't do this in the private module due to the known conflict between multibindings
  // and private modules due to multiple injectors.  We accept the added complexity here to keep
  // the other bindings private.
  PubsubEventModule.bindSubscriber(binder(), ClusterStateImpl.class);
  if (enablePreemptor) {
    SchedulerServicesModule.addSchedulerActiveServiceBinding(binder())
        .to(PreemptorService.class);
  }
}
项目:GRIP    文件:PipelineRunner.java   
PipelineRunner(EventBus eventBus,
               Supplier<ImmutableList<Source>> sourceSupplier,
               Supplier<ImmutableList<Step>> stepSupplier,
               Timer.Factory timerFactory) {
  this.sourceSupplier = sourceSupplier;
  this.stepSupplier = stepSupplier;
  Timer timer = timerFactory.create(this);
  this.pipelineService = new AutoRestartingService<>(
      () -> new AbstractScheduledService() {

        /**
         *
         * @throws InterruptedException This should never happen.
         */
        @Override
        protected void runOneIteration() throws InterruptedException {
          if (!super.isRunning()) {
            return;
          }

          pipelineFlag.acquire();
          eventBus.post(new RunStartedEvent());

          if (!super.isRunning()) {
            return;
          }
          timer.time(() -> runPipeline(super::isRunning));
          // This should not block access to the steps array
          eventBus.post(new RunStoppedEvent());
          if (super.isRunning()) {
            eventBus.post(new RenderEvent());
          }
        }

        @Override
        protected Scheduler scheduler() {
          return Scheduler.newFixedRateSchedule(0, 1, TimeUnit.MILLISECONDS);
        }

        @Override
        protected String serviceName() {
          return "Pipeline Runner Service";
        }
      }
  );
  this.pipelineService.addListener(new LoggingListener(logger, PipelineRunner.class),
      MoreExecutors.directExecutor());
}
项目:cultivar    文件:RegistrationServiceModuleBuilder.java   
public Module build() {
    checkState(targetHolder != null, "Target annotation has not been set.");
    checkState(discoveryHolder != null, "Discovery annotation has not been set.");
    checkState(binderAssistant != null, "No provider provided.");

    return new AbstractModule() {
        @SuppressWarnings("unchecked")
        @Override
        protected void configure() {
            final Key<RegistrationService<T>> registrationServiceKey = (Key<RegistrationService<T>>) targetHolder
                    .generateKey(Types.newParameterizedType(RegistrationService.class, clazz));

            install(new PrivateModule() {
                @SuppressWarnings("unchecked")
                @Override
                protected void configure() {

                    if (scheduler != null) {
                        bind(AbstractScheduledService.Scheduler.class).annotatedWith(Private.class).toInstance(
                                scheduler);
                        bind(ScheduledExecutorService.class).annotatedWith(Private.class).toInstance(
                                executorService);
                    }

                    bind(
                            (Key<ServiceDiscovery<T>>) Key.get(
                                    Types.newParameterizedType(ServiceDiscovery.class, clazz), Private.class)).to(
                            (Key<ServiceDiscovery<T>>) discoveryHolder.generateKey(Types.newParameterizedType(
                                    ServiceDiscovery.class, clazz)));

                    binderAssistant.bindToProvider(
                            binder(),
                            (Key<ServiceInstance<T>>) Key.get(
                                    Types.newParameterizedType(ServiceInstance.class, clazz), Private.class));

                    bind(registrationServiceKey).to(
                            (Key<? extends RegistrationService<T>>) Key.get(Types.newParameterizedType(bindType,
                                    clazz))).in(Scopes.SINGLETON);

                    expose(registrationServiceKey);
                }
            });

            Multibinder<RegistrationService<?>> services = Multibinder.newSetBinder(binder(),
                    new TypeLiteral<RegistrationService<?>>() {
                    });

            services.addBinding().to(registrationServiceKey);

        }
    };
}
项目:papaya    文件:ScheduledService.java   
public Schedule scheduleFixedRate(long initialDelay, long period, TimeUnit timeUnit) {
  return new Schedule(AbstractScheduledService.Scheduler.newFixedRateSchedule(initialDelay, period, timeUnit));
}
项目:papaya    文件:ScheduledService.java   
public Schedule scheduleFixedDelay(long initialDelay, long delay, TimeUnit timeUnit) {
  return new Schedule(AbstractScheduledService.Scheduler.newFixedDelaySchedule(initialDelay, delay, timeUnit));
}
项目:AisView    文件:AisViewDaemon.java   
@Override
protected void runDaemon(Injector injector) throws Exception {
    // Tracking of live data
    final TargetTracker targetTracker = new TargetTracker();

    // A cache manager where caches can be held and retrieved
    final CacheManager cacheManager = new CacheManager();

    // Setup the readers
    AisReaderGroup g = AisReaders.createGroup("AisView",
            sources == null ? Collections.<String> emptyList() : sources);
    AisReaders.manageGroup(g);

    // A job manager that takes care of tracking ongoing jobs
    final JobManager jobManager = new JobManager();

    // Setup the backup process
    // Files.createDirectories(backup);
    backup.mkdirs();
    if(!backup.isDirectory()) {
        throw new IOException("Unable to create directories for " + backup);
    }

    start(new TargetTrackerFileBackupService(targetTracker, backup.toPath()));

    // start tracking
    targetTracker.subscribeToPacketStream(g.stream());

    //target tracking cleanup service
    start(new AbstractScheduledService() {

        @Override
        protected Scheduler scheduler() {
            return Scheduler.newFixedDelaySchedule(1, 10, TimeUnit.MINUTES);
        }

        @Override
        protected void runOneIteration() throws Exception {
            final Date satellite = new Date(new Date().getTime()-(1000*60*60*48));
            final Date live = new Date(new Date().getTime()-(1000*60*60*12));

            targetTracker.removeAll((t, u) -> {
                switch(t.getSourceType()) {
                case SATELLITE:
                    return !u.hasPositionInfo() || new Date(u.getPositionTimestamp()).before(satellite);
                default:
                    return !u.hasPositionInfo() || new Date(u.getPositionTimestamp()).before(live);
                }
            });
        }
    });

    //target cleanup missing static data
    start(new AbstractScheduledService() {
        @Override
        protected Scheduler scheduler() {
            return Scheduler.newFixedDelaySchedule(1, 24, TimeUnit.HOURS);
        }

        @Override
        protected void runOneIteration() throws Exception {
            targetTracker.removeAll(u -> !u.hasStaticInfo());
        }
    });

    start(g.asService());

    // Start Ais Store Connection
    final CassandraConnection con = connect();

    WebServer ws = new WebServer(port);
    ws.getContext().setAttribute(
            AbstractResource.CONFIG,
            AbstractResource.create(g, con, targetTracker, cacheManager, jobManager));

    ws.start();
    LOG.info("AisView started");
    ws.join();
}
项目:buck    文件:ProcessTracker.java   
@Override
protected AbstractScheduledService.Scheduler scheduler() {
  return Scheduler.newFixedRateSchedule(0L, 1000L, TimeUnit.MILLISECONDS);
}
项目:buck    文件:PerfStatsTracking.java   
@Override
protected AbstractScheduledService.Scheduler scheduler() {
  return Scheduler.newFixedRateSchedule(1L, 1L, TimeUnit.SECONDS);
}
项目:papaya    文件:ScheduledService.java   
private Schedule(AbstractScheduledService.Scheduler scheduler) {this.scheduler = scheduler;}