Sharpen.ThreadPoolExecutor.InternalExecute C# (CSharp) Method

InternalExecute() private method

private InternalExecute ( Runnable r, bool checkShutdown ) : void
r Runnable
checkShutdown bool
return void
		internal void InternalExecute (Runnable r, bool checkShutdown)
		{
			lock (pendingTasks) {
				if (shutdown && checkShutdown)
					throw new InvalidOperationException ();
				if (runningThreads < corePoolSize) {
					StartPoolThread ();
				}
				else if (freeThreads > 0) {
					freeThreads--;
				}
				else if (runningThreads < maxPoolSize) {
					StartPoolThread ();
				}
				pendingTasks.Enqueue (r);
				ST.Monitor.PulseAll (pendingTasks);
			}
		}