Bug 576736 - avoid running jobs if not needed

Change-Id: Ic2ec59af05281ca4acc046e3e48d74d1069ba514
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
Reviewed-on: https://git.eclipse.org/r/c/pde/eclipse.pde.ui/+/189674
Tested-by: PDE Bot <pde-bot@eclipse.org>
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java
index 24c70cc..6c9fcef 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java
@@ -198,8 +198,7 @@
 	 */
 	void cleanupMarkers(IResource resource) {
 		if (isRunningAsJob()) {
-			ApiAnalysisMarkersJob job = new ApiAnalysisMarkersJob(() -> cleanupMarkersInternally(resource));
-			job.schedule();
+			new ApiAnalysisMarkersJob(() -> cleanupMarkersInternally(resource)).schedule();
 		} else {
 			cleanupMarkersInternally(resource);
 		}
@@ -953,6 +952,16 @@
 		}
 
 		@Override
+		public boolean shouldRun() {
+			return !markersQueue.isEmpty();
+		}
+
+		@Override
+		public boolean shouldSchedule() {
+			return !markersQueue.isEmpty();
+		}
+
+		@Override
 		public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
 			while (!markersQueue.isEmpty()) {
 				Runnable task = markersQueue.poll();