2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.components.scheduledtasks;
23 import org.openecomp.sdc.common.log.wrappers.Logger;
25 import java.util.concurrent.ExecutorService;
26 import java.util.concurrent.TimeUnit;
29 public abstract class AbstractScheduleTaskRunner {
30 private static final Logger log = Logger.getLogger(AbstractScheduleTaskRunner.class);
31 public abstract ExecutorService getExecutorService();
33 protected void shutdownExecutor() {
34 ExecutorService executorService = getExecutorService();
35 if (executorService == null)
38 executorService.shutdown(); // Disable new tasks from being submitted
40 // Wait a while for existing tasks to terminate
41 if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
42 executorService.shutdownNow(); // Cancel currently executing
44 // Wait a while for tasks to respond to being cancelled
45 if (!executorService.awaitTermination(60, TimeUnit.SECONDS))
46 log.debug("Pool did not terminate");
48 } catch (InterruptedException ie) {
49 // (Re-)Cancel if current thread also interrupted
50 executorService.shutdownNow();
51 // Preserve interrupt status
52 Thread.currentThread().interrupt();