]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/internal/JobExecutor.java
bbd36800751af18f7b5a978900e03156c1f72916
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / internal / JobExecutor.java
1 package org.asamk.signal.manager.internal;
2
3 import org.asamk.signal.manager.helper.Context;
4 import org.asamk.signal.manager.jobs.Job;
5 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory;
7
8 import java.util.concurrent.ExecutorService;
9 import java.util.concurrent.Executors;
10
11 public class JobExecutor implements AutoCloseable {
12
13 private static final Logger logger = LoggerFactory.getLogger(JobExecutor.class);
14 private final Context context;
15 private final ExecutorService executorService;
16
17 public JobExecutor(final Context context) {
18 this.context = context;
19 this.executorService = Executors.newCachedThreadPool();
20 }
21
22 public void enqueueJob(Job job) {
23 logger.debug("Enqueuing {} job", job.getClass().getSimpleName());
24
25 executorService.execute(() -> job.run(context));
26 }
27
28 @Override
29 public void close() {
30 executorService.close();
31 }
32 }