| java.lang.Object org.openide.util.RequestProcessor
RequestProcessor | final public class RequestProcessor (Code) | | Request processor that is capable to execute requests in dedicated threads.
You can create your own instance or use the shared one.
There are several use cases for RequestProcessor:
Note: If you don't need to serialize your requests but
you're generating them in bursts, you should use your private
RequestProcessor instance with limited throughput (probably
set to 1), NetBeans would try to run all your requests in parallel otherwise.
Since version 6.3 there is a conditional support for interruption of long running tasks.
There always was a way how to cancel not yet running task using
RequestProcessor.Task.cancel but if the task was already running, one was out of luck. Since version 6.3
the thread running the task is interrupted and the Runnable can check for that
and terminate its execution sooner. In the runnable one shall check for
thread interruption (done from
RequestProcessor.Task.cancel ) and
if true, return immediatelly as in this example:
public void run () {
while (veryLongTimeLook) {
doAPieceOfIt ();
if (Thread.interrupted ()) return;
}
}
author: Petr Nejedly, Jaroslav Tulach |
Constructor Summary | |
public | RequestProcessor() Creates new RequestProcessor with automatically assigned unique name. | public | RequestProcessor(String name) Creates a new named RequestProcessor with throughput 1. | public | RequestProcessor(String name, int throughput) Creates a new named RequestProcessor with defined throughput. | public | RequestProcessor(String name, int throughput, boolean interruptThread) Creates a new named RequestProcessor with defined throughput which
can support interruption of the thread the processor runs in.
There always was a way how to cancel not yet running task using
RequestProcessor.Task.cancel but if the task was already running, one was out of luck. |
Method Summary | |
Task | askForWork(Processor worker, String debug) | public Task | create(Runnable run) Creates request that can be later started by setting its delay.
The request is not immediatelly put into the queue. | public Task | create(Runnable run, boolean initiallyFinished) Creates request that can be later started by setting its delay.
The request is not immediatelly put into the queue. | public static Task | createRequest(Runnable run) Creates request that can be later started by setting its delay.
The request is not immediatelly put into the queue. | void | enqueue(Item item) Place the Task to the queue of pending tasks for immediate processing. | public static RequestProcessor | getDefault() The getter for the shared instance of the RequestProcessor .
This instance is shared by anybody who
needs a way of performing sporadic or repeated asynchronous work.
Tasks posted to this instance may be canceled until they start their
execution. | public boolean | isRequestProcessorThread() Tests if the current thread is request processor thread.
This method could be used to prevent the deadlocks using
waitFinished method. | static Logger | logger() Logger for the error manager. | public Task | post(Runnable run) This methods asks the request processor to start given
runnable immediately. | public Task | post(Runnable run, int timeToWait) This methods asks the request processor to start given
runnable after timeToWait milliseconds. | public Task | post(Runnable run, int timeToWait, int priority) This methods asks the request processor to start given
runnable after timeToWait milliseconds. | public static Task | postRequest(Runnable run) This methods asks the request processor to start given
runnable after timeToWait milliseconds. | public static Task | postRequest(Runnable run, int timeToWait) This methods asks the request processor to start given
runnable after timeToWait milliseconds. | public static Task | postRequest(Runnable run, int timeToWait, int priority) This methods asks the request processor to start given
runnable after timeToWait milliseconds. | public void | stop() Stops processing of runnables processor. |
SLOW | final static boolean SLOW(Code) | | |
name | String name(Code) | | The name of the RequestProcessor instance
|
stopped | boolean stopped(Code) | | If the RP was stopped, this variable will be set, every new post()
will throw an exception and no task will be processed any further
|
RequestProcessor | public RequestProcessor()(Code) | | Creates new RequestProcessor with automatically assigned unique name.
|
RequestProcessor | public RequestProcessor(String name)(Code) | | Creates a new named RequestProcessor with throughput 1.
Parameters: name - the name to use for the request processor thread |
RequestProcessor | public RequestProcessor(String name, int throughput)(Code) | | Creates a new named RequestProcessor with defined throughput.
Parameters: name - the name to use for the request processor thread Parameters: throughput - the maximal count of requests allowed to run in parallel since: OpenAPI version 2.12 |
RequestProcessor | public RequestProcessor(String name, int throughput, boolean interruptThread)(Code) | | Creates a new named RequestProcessor with defined throughput which
can support interruption of the thread the processor runs in.
There always was a way how to cancel not yet running task using
RequestProcessor.Task.cancel but if the task was already running, one was out of luck. With this
constructor one can create a
RequestProcessor which threads
thread running tasks are interrupted and the Runnable can check for that
and terminate its execution sooner. In the runnable one shall check for
thread interruption (done from
RequestProcessor.Task.cancel ) and
if true, return immediatelly as in this example:
public void run () {
while (veryLongTimeLook) {
doAPieceOfIt ();
if (Thread.interrupted ()) return;
}
}
Parameters: name - the name to use for the request processor thread Parameters: throughput - the maximal count of requests allowed to run in parallel Parameters: interruptThread - true if RequestProcessor.Task.cancel shall interrupt the thread since: 6.3 |
create | public Task create(Runnable run)(Code) | | Creates request that can be later started by setting its delay.
The request is not immediatelly put into the queue. It is planned after
setting its delay by schedule method. By default the initial state of
the task is !isFinished() so doing waitFinished() will
block on and wait until the task is scheduled.
Parameters: run - action to run in the process the task to control execution of given action |
create | public Task create(Runnable run, boolean initiallyFinished)(Code) | | Creates request that can be later started by setting its delay.
The request is not immediatelly put into the queue. It is planned after
setting its delay by schedule method.
Parameters: run - action to run in the process Parameters: initiallyFinished - should the task be marked initially finished? If so the Task.waitFinished on the task will succeeded immediatelly eventhe task has not yet been Task.scheduled. the task to control execution of given action since: 6.8 |
createRequest | public static Task createRequest(Runnable run)(Code) | | Creates request that can be later started by setting its delay.
The request is not immediatelly put into the queue. It is planned after
setting its delay by setDelay method.
Parameters: run - action to run in the process the task to control execution of given action |
enqueue | void enqueue(Item item)(Code) | | Place the Task to the queue of pending tasks for immediate processing.
If there is no other Task planned, this task is immediatelly processed
in the Processor.
|
isRequestProcessorThread | public boolean isRequestProcessorThread()(Code) | | Tests if the current thread is request processor thread.
This method could be used to prevent the deadlocks using
waitFinished method. Any two tasks created
by request processor must not wait for themself.
true if the current thread is request processorthread, otherwise false |
logger | static Logger logger()(Code) | | Logger for the error manager.
|
post | public Task post(Runnable run)(Code) | | This methods asks the request processor to start given
runnable immediately. The default priority is
Thread.MIN_PRIORITY .
Parameters: run - class to run the task to control the request |
post | public Task post(Runnable run, int timeToWait)(Code) | | This methods asks the request processor to start given
runnable after timeToWait milliseconds. The default priority is
Thread.MIN_PRIORITY .
Parameters: run - class to run Parameters: timeToWait - to wait before execution the task to control the request |
post | public Task post(Runnable run, int timeToWait, int priority)(Code) | | This methods asks the request processor to start given
runnable after timeToWait milliseconds. Given priority is assigned to the
request.
For request relaying please consider:
post(run, timeToWait, Thread.currentThread().getPriority());
Parameters: run - class to run Parameters: timeToWait - to wait before execution Parameters: priority - the priority from Thread.MIN_PRIORITY to Thread.MAX_PRIORITY the task to control the request |
postRequest | public static Task postRequest(Runnable run)(Code) | | This methods asks the request processor to start given
runnable after timeToWait milliseconds. The default priority is
Thread.MIN_PRIORITY .
Parameters: run - class to run the task to control the request |
postRequest | public static Task postRequest(Runnable run, int timeToWait)(Code) | | This methods asks the request processor to start given
runnable after timeToWait milliseconds.
The default priority is
Thread.MIN_PRIORITY .
Parameters: run - class to run Parameters: timeToWait - to wait before execution the task to control the request |
postRequest | public static Task postRequest(Runnable run, int timeToWait, int priority)(Code) | | This methods asks the request processor to start given
runnable after timeToWait milliseconds. Given priority is assigned to the
request.
Parameters: run - class to run Parameters: timeToWait - to wait before execution Parameters: priority - the priority from Thread.MIN_PRIORITY to Thread.MAX_PRIORITY the task to control the request |
stop | public void stop()(Code) | | Stops processing of runnables processor.
The currently running runnable is finished and no new is started.
|
|
|