public final class CancellationToken extends Object implements AutoCloseable
It is typically passed as a parameter to methods that perform an operation that could potentially take a long time. The method can either manually check whether the ongoing operation is canceled
and react accordingly, or it can run a ICancellableTask
on that token by calling CancellationToken#runTask
, in which case the task will be notified as soon as the CancellationToken
gets canceled.
For example: when raster data is added to the Map
, the map's rendering backend will request raster tile data. When at the same time, this raster data is removed from the map, the rendering backend will want to stop requesting data as quickly as possible. For that purpose:
CancellationToken
instances with each raster data request
CancellationToken#isCanceled
method periodically and take appropriate action to stop executing once it noticed the token is canceled, or b. wrapping the Http request in an ICancellableTask
and calling CancellationToken#runTask
, so that the request can be aborted (by calling the appropriate method on the request class) as soon as the token gets canceled.
It is not mandatory to use the CancellationToken
, but it is recommended. Not doing so may block operations for a longer time, such a removing a layer or closing the map.
Modifier and Type | Method and Description |
---|---|
void |
close() |
protected void |
finalize() |
boolean |
isCanceled()
Returns whether the cancellation token has the status canceled.
|
void |
runTask(ICancellableTask task)
Runs a cancellable task that will be notified when the
CancellationToken is canceled. |
public void close()
close
in interface AutoCloseable
public boolean isCanceled()
This method is typically used by time-consuming operations. These operations are supposed to regularly check the status of this method. When it returns 'true', the operation can decide to stop executing.
public void runTask(@NotNull ICancellableTask task)
CancellationToken
is canceled.
This method synchronously calls ICancellableTask#run()
on the provided task. If the token is canceled by another thread while runTask is executing, ICancellableTask#cancel()
will be called on that other thread.
task
- the cancellable task to be executed