Package org.apache.lucene.monitor

# Class ConcurrentQueryLoader

java.lang.Object
org.apache.lucene.monitor.ConcurrentQueryLoader

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public class ConcurrentQueryLoader extends Object implements Closeable
Utility class for concurrently loading queries into a Monitor.

This is useful to speed up startup times for a Monitor. You can use multiple threads to parse and index queries before starting matches.

Use as follows:

         List<QueryError> errors = new ArrayList<>();
         try (ConcurrentQueryLoader loader = new ConcurrentQueryLoader(monitor, errors)) {
             for (MonitorQuery mq : getQueries()) {
                 loader.add(mq);
             }
         }

The Monitor's MonitorQueryParser must be thread-safe for this to work correctly.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`DEFAULT_QUEUE_SIZE`

## Constructor Summary

Constructors
Constructor
Description
`ConcurrentQueryLoader(Monitor monitor)`
Create a new ConcurrentQueryLoader for a `Monitor`
`ConcurrentQueryLoader(Monitor monitor, int threads, int queueSize)`
Create a new ConcurrentQueryLoader

## Method Summary

Modifier and Type
Method
Description
`void`
`add(MonitorQuery mq)`
Add a MonitorQuery to the loader's internal buffer
`void`
`close()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### DEFAULT_QUEUE_SIZE

public static final int DEFAULT_QUEUE_SIZE

See Also:
  - Constant Field Values

## Constructor Details

### ConcurrentQueryLoader

public ConcurrentQueryLoader(Monitor monitor)
Create a new ConcurrentQueryLoader for a `Monitor`

Parameters:
  `monitor` - Monitor

### ConcurrentQueryLoader

public ConcurrentQueryLoader(Monitor monitor, int threads, int queueSize)
Create a new ConcurrentQueryLoader

Parameters:
  `monitor` - the Monitor to load queries to
  `threads` - the number of threads to use
  `queueSize` - the size of the buffer to hold queries in

## Method Details

### add

public void add(MonitorQuery mq) throws InterruptedException
Add a MonitorQuery to the loader's internal buffer

If the buffer is full, this will block until there is room to add the MonitorQuery

Parameters:
  `mq` - the monitor query
Throws:
  `InterruptedException` - if interrupted while waiting

### close

public void close() throws IOException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Throws:
  `IOException`