| 59 | } |
| 60 | |
| 61 | private synchronized CleanerRef add(CleanerRef ref) { |
| 62 | synchronized (referenceQueue) { |
| 63 | if (firstCleanable == null) { |
| 64 | firstCleanable = ref; |
| 65 | } else { |
| 66 | ref.setNext(firstCleanable); |
| 67 | firstCleanable.setPrevious(ref); |
| 68 | firstCleanable = ref; |
| 69 | } |
| 70 | if (cleanerThread == null) { |
| 71 | Logger.getLogger(Cleaner.class.getName()).log(Level.FINE, "Starting CleanerThread"); |
| 72 | cleanerThread = new CleanerThread(); |
| 73 | cleanerThread.start(); |
| 74 | } |
| 75 | return ref; |
| 76 | } |
| 77 | } |
| 78 | |
| 79 | private synchronized boolean remove(CleanerRef ref) { |
| 80 | synchronized (referenceQueue) { |