MCPcopy Create free account
hub / github.com/java-native-access/jna / run

Method run

src/com/sun/jna/internal/Cleaner.java:150–186  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

148 }
149
150 @Override
151 public void run() {
152 while (true) {
153 try {
154 Reference<? extends Object> ref = referenceQueue.remove(CLEANER_LINGER_TIME);
155 if (ref instanceof CleanerRef) {
156 ((CleanerRef) ref).clean();
157 } else if (ref == null) {
158 synchronized (referenceQueue) {
159 Logger logger = Logger.getLogger(Cleaner.class.getName());
160 if (firstCleanable == null) {
161 cleanerThread = null;
162 logger.log(Level.FINE, "Shutting down CleanerThread");
163 break;
164 } else if (logger.isLoggable(Level.FINER)) {
165 StringBuilder registeredCleaners = new StringBuilder();
166 for(CleanerRef cleanerRef = firstCleanable; cleanerRef != null; cleanerRef = cleanerRef.next) {
167 if(registeredCleaners.length() != 0) {
168 registeredCleaners.append(", ");
169 }
170 registeredCleaners.append(cleanerRef.cleanupTask.toString());
171 }
172 logger.log(Level.FINER, "Registered Cleaners: {0}", registeredCleaners.toString());
173 }
174 }
175 }
176 } catch (InterruptedException ex) {
177 // Can be raised on shutdown. If anyone else messes with
178 // our reference queue, well, there is no way to separate
179 // the two cases.
180 // https://groups.google.com/g/jna-users/c/j0fw96PlOpM/m/vbwNIb2pBQAJ
181 break;
182 } catch (Exception ex) {
183 Logger.getLogger(Cleaner.class.getName()).log(Level.SEVERE, null, ex);
184 }
185 }
186 }
187 }
188}

Callers 1

cleanMethod · 0.45

Calls 6

cleanMethod · 0.65
getNameMethod · 0.65
removeMethod · 0.45
logMethod · 0.45
lengthMethod · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected