public void setMaxIdleTime(int maxIdleTime) {
this.maxIdleTime = maxIdleTime;
+ if (executor != null) {
+ executor.setKeepAliveTime(maxIdleTime, TimeUnit.MILLISECONDS);
+ }
}
public void setMaxThreads(int maxThreads) {
this.maxThreads = maxThreads;
+ if (executor != null) {
+ executor.setMaximumPoolSize(maxThreads);
+ }
}
public void setMinSpareThreads(int minSpareThreads) {
this.minSpareThreads = minSpareThreads;
+ if (executor != null) {
+ executor.setCorePoolSize(minSpareThreads);
+ }
}
public void setName(String name) {
import org.apache.tomcat.jni.SSLSocket;
import org.apache.tomcat.jni.Socket;
import org.apache.tomcat.jni.Status;
+import org.apache.tomcat.util.net.JIoEndpoint.Worker;
import org.apache.tomcat.util.res.StringManager;
/**
* Maximum amount of worker threads.
*/
protected int maxThreads = 200;
- public void setMaxThreads(int maxThreads) { this.maxThreads = maxThreads; }
+ public void setMaxThreads(int maxThreads) {
+ this.maxThreads = maxThreads;
+ if (running) {
+ synchronized(workers) {
+ workers.resize(maxThreads);
+ }
+ }
+ }
public int getMaxThreads() { return maxThreads; }
}
/**
- * Put the object into the queue.
+ * Put the object into the queue. If the queue is full (for example if
+ * the queue has been reduced in size) the object will be dropped.
*
- * @param object the object to be appended to the queue (first element).
+ * @param object the object to be appended to the queue (first
+ * element).
*/
public void push(Worker worker) {
- workers[end++] = worker;
+ if (end < workers.length) {
+ workers[end++] = worker;
+ } else {
+ curThreads--;
+ }
}
/**
public int size() {
return (end);
}
+
+ /**
+ * Resize the queue. If there are too many objects in the queue for the
+ * new size, drop the excess.
+ *
+ * @param newSize
+ */
+ public void resize(int newSize) {
+ Worker[] newWorkers = new Worker[newSize];
+ int len = workers.length;
+ if (newSize < len) {
+ len = newSize;
+ }
+ System.arraycopy(workers, 0, newWorkers, 0, len);
+ workers = newWorkers;
+ }
}
* Maximum amount of worker threads.
*/
protected int maxThreads = 200;
- public void setMaxThreads(int maxThreads) { this.maxThreads = maxThreads; }
+ public void setMaxThreads(int maxThreads) {
+ this.maxThreads = maxThreads;
+ if (running) {
+ synchronized(workers) {
+ workers.resize(maxThreads);
+ }
+ }
+ }
public int getMaxThreads() { return maxThreads; }
}
/**
- * Put the object into the queue.
+ * Put the object into the queue. If the queue is full (for example if
+ * the queue has been reduced in size) the object will be dropped.
*
- * @param object the object to be appended to the queue (first element).
+ * @param object the object to be appended to the queue (first
+ * element).
*/
public void push(Worker worker) {
- workers[end++] = worker;
+ if (end < workers.length) {
+ workers[end++] = worker;
+ } else {
+ curThreads--;
+ }
}
/**
public int size() {
return (end);
}
+
+ /**
+ * Resize the queue. If there are too many objects in the queue for the
+ * new size, drop the excess.
+ *
+ * @param newSize
+ */
+ public void resize(int newSize) {
+ Worker[] newWorkers = new Worker[newSize];
+ int len = workers.length;
+ if (newSize < len) {
+ len = newSize;
+ }
+ System.arraycopy(workers, 0, newWorkers, 0, len);
+ workers = newWorkers;
+ }
}
}
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.IntrospectionUtils;
+import org.apache.tomcat.util.net.JIoEndpoint.Worker;
import org.apache.tomcat.util.net.SecureNioChannel.ApplicationBufferHandler;
import org.apache.tomcat.util.res.StringManager;
* Maximum amount of worker threads.
*/
protected int maxThreads = 200;
- public void setMaxThreads(int maxThreads) { this.maxThreads = maxThreads; }
+ public void setMaxThreads(int maxThreads) {
+ this.maxThreads = maxThreads;
+ if (running) {
+ synchronized(workers) {
+ workers.resize(maxThreads);
+ }
+ }
+ }
public int getMaxThreads() { return maxThreads; }
}
/**
- * Put the object into the queue.
+ * Put the object into the queue. If the queue is full (for example if
+ * the queue has been reduced in size) the object will be dropped.
*
- * @param object the object to be appended to the queue (first element).
+ * @param object the object to be appended to the queue (first
+ * element).
*/
public void push(Worker worker) {
- workers[end++] = worker;
+ if (end < workers.length) {
+ workers[end++] = worker;
+ } else {
+ curThreads--;
+ }
}
/**
public int size() {
return (end);
}
+
+ /**
+ * Resize the queue. If there are too many objects in the queue for the
+ * new size, drop the excess.
+ *
+ * @param newSize
+ */
+ public void resize(int newSize) {
+ Worker[] newWorkers = new Worker[newSize];
+ int len = workers.length;
+ if (newSize < len) {
+ len = newSize;
+ }
+ System.arraycopy(workers, 0, newWorkers, 0, len);
+ workers = newWorkers;
+ }
}