public void stop() { synchronized (workers) { for (WorkerImpl worker : new ArrayList<WorkerImpl>(workers)) { worker.interrupt(); } } synchronized (workersMonitored) { for (WorkerImpl worker : new ArrayList<WorkerImpl>(workersMonitored)) { worker.interrupt(); } } if (jobMonitor != null) { jobMonitor.endThread(); } jobMonitor = null; }
public void killJob(WorkerImpl worker, RenderingJob job) { try { if (log.isWarnEnabled()) { PortletWindow window = job.getWindow(); PortletWindowID windowId = (null != window ? window.getId() : null); log.warn("Portlet Rendering job to be interrupted by timeout (" + job.getTimeout() + "ms): " + windowId.getStringId()); } PortletContent content = job.getPortletContent(); synchronized (content) { if (!content.isComplete()) { worker.interrupt(); content.wait(); } } } catch (Exception e) { log.error("Exceptiong during job killing.", e); } } }