com.hazelcast.scheduledexecutor.IScheduledFuture Maven / Gradle / Ivy
/*
* Copyright (c) 2008-2017, Hazelcast, Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hazelcast.scheduledexecutor;
import java.util.concurrent.ScheduledFuture;
/**
* A delayed result-bearing action that can be cancelled.
* Usually a scheduled future is the result of scheduling
* a task with a {@link IScheduledExecutorService}.
*
* Enhances the default {@link ScheduledFuture} API with support
* of statistics and time measurement info, through {@link ScheduledTaskStatistics}
*
* @param The result type returned by this Future
*/
public interface IScheduledFuture
extends ScheduledFuture {
/**
* Returns the scheduled future resource handler.
* Can be used to re-acquire control of the {@link IScheduledFuture} using the
* {@link IScheduledExecutorService#getScheduledFuture(ScheduledTaskHandler)}
*
* @return An instance of {@link ScheduledTaskHandler}, a resource handler for this scheduled future.
*/
ScheduledTaskHandler getHandler();
/**
* Returns the statistics and time measurement info of the execution of this scheduled future
* in the {@link IScheduledExecutorService} it was scheduled.
*
* @return An instance of {@link ScheduledTaskStatistics}, holding all stas and measurements
*/
ScheduledTaskStatistics getStats();
/**
* Used to destroy the instance of the {@link IScheduledFuture} in the scheduled executor.
* Once the instance is destroyed, any subsequent action on the {@link IScheduledFuture} will
* fail with an {@link IllegalStateException}
* Attempting to re-create the {@link IScheduledFuture} from the
* {@link IScheduledExecutorService#getScheduledFuture(ScheduledTaskHandler)} using the {@link #getHandler()}
* will succeed, but any subsequent access on that new future, will also fail with {@link StaleTaskException}
*/
void dispose();
/**
* Attempts to cancel further scheduling of this task. This attempt will
* fail if the task has already completed, has already been cancelled,
* or could not be cancelled for some other reason. If successful,
* and this task has not started when {@code cancel} is called,
* this task should never run.
*
* Warning: This cancel will not attempt to interrupt the running
* thread if the task is already in progress, will just cancel further scheduling.
*
* After this method returns, subsequent calls to {@link #isDone} will
* always return {@code true}. Subsequent calls to {@link #isCancelled}
* will always return {@code true} if this method returned {@code true}.
*
* @param mayInterruptIfRunning is throwing {@link UnsupportedOperationException}
* @return {@code false} if the task could not be cancelled,
* typically because it has already completed normally;
* {@code true
*/
boolean cancel(boolean mayInterruptIfRunning);
}