RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
StartupService.java
1package com.osroyale.game.service;
2
3import java.util.Collection;
4import java.util.List;
5import java.util.concurrent.*;
6
46
47public class StartupService implements ExecutorService {
48
50 private ExecutorService service = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
51
53 private BlockingQueue<Future<?>> pendingTasks = new LinkedBlockingQueue<>();
54
61 public void waitForPendingTasks() throws ExecutionException {
62 while (pendingTasks.size() > 0) {
63 if (isShutdown()) {
64 return;
65 }
66 try {
67 pendingTasks.take().get();
68 } catch (InterruptedException e) {
69 continue;
70 }
71 }
72 }
73
74 public void awaitUntilFinished(long timeout, TimeUnit timeUnit) {
75 try {
76 service.awaitTermination(timeout, timeUnit);
77 } catch (InterruptedException e) {
78 e.printStackTrace();
79 }
80 }
81
87 public int getPendingTaskAmount() {
88 return pendingTasks.size();
89 }
90
91 @Override
92 public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
93 return service.awaitTermination(timeout, unit);
94 }
95
96 @Override
97 public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException {
98 List<Future<T>> futures = service.invokeAll(tasks);
99 for (Future<?> future : futures) {
100 pendingTasks.add(future);
101 }
102 return futures;
103 }
104
105 @Override
106 public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
107 throws InterruptedException {
108 List<Future<T>> futures = service.invokeAll(tasks, timeout, unit);
109 for (Future<?> future : futures) {
110 pendingTasks.add(future);
111 }
112 return futures;
113 }
114
115 @Override
116 public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException {
117 return service.invokeAny(tasks);
118 }
119
120 @Override
121 public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
122 throws InterruptedException, ExecutionException, TimeoutException {
123 return service.invokeAny(tasks, timeout, unit);
124 }
125
126 @Override
127 public boolean isShutdown() {
128 return service.isShutdown();
129 }
130
131 @Override
132 public boolean isTerminated() {
133 return service.isTerminated();
134 }
135
136 @Override
137 public void shutdown() {
138 service.shutdown();
139 }
140
141 @Override
142 public List<Runnable> shutdownNow() {
143 return service.shutdownNow();
144 }
145
146 @Override
147 public <T> Future<T> submit(Callable<T> task) {
148 Future<T> future = service.submit(task);
149 pendingTasks.add(future);
150 return future;
151 }
152
153 @Override
154 public Future<?> submit(Runnable task) {
155 Future<?> future = service.submit(task);
156 pendingTasks.add(future);
157 return future;
158 }
159
160 @Override
161 public <T> Future<T> submit(Runnable task, T result) {
162 Future<T> future = service.submit(task, result);
163 pendingTasks.add(future);
164 return future;
165 }
166
167 @Override
168 public void execute(Runnable command) {
169 service.execute(command);
170 }
171
172}