Index: src/com/github/rjeschke/neetutils/dispose/Disposer.java |
diff --git a/src/com/github/rjeschke/neetutils/dispose/Disposer.java b/src/com/github/rjeschke/neetutils/dispose/Disposer.java |
deleted file mode 100644 |
index 4200be1cf4e0be6b75184a1e313258131fab6d50..0000000000000000000000000000000000000000 |
--- a/src/com/github/rjeschke/neetutils/dispose/Disposer.java |
+++ /dev/null |
@@ -1,99 +0,0 @@ |
-/* |
- * Copyright (C) 2012 René Jeschke <rene_jeschke@yahoo.de> |
- * |
- * Licensed under the Apache License, Version 2.0 (the "License"); |
- * you may not use this file except in compliance with the License. |
- * You may obtain a copy of the License at |
- * |
- * http://www.apache.org/licenses/LICENSE-2.0 |
- * |
- * Unless required by applicable law or agreed to in writing, software |
- * distributed under the License is distributed on an "AS IS" BASIS, |
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
- * See the License for the specific language governing permissions and |
- * limitations under the License. |
- */ |
-package com.github.rjeschke.neetutils.dispose; |
- |
-import java.lang.ref.ReferenceQueue; |
-import java.lang.ref.WeakReference; |
- |
-import com.github.rjeschke.neetutils.dispose.ReferenceList.Node; |
- |
-/** |
- * |
- * @author René Jeschke (rene_jeschke@yahoo.de) |
- * |
- */ |
-public class Disposer extends WeakReference<Disposable> |
-{ |
- private final Disposable disposable; |
- private final Node<Disposer> disposer; |
- private volatile boolean disposed = false; |
- final static ReferenceQueue<Disposable> refQueue; |
- final static ReferenceList<Disposer> disposers; |
- |
- static |
- { |
- refQueue = new ReferenceQueue<Disposable>(); |
- disposers = new ReferenceList<Disposer>(); |
- |
- final Thread thread = new Thread(new Cleaner()); |
- thread.setName("neetutils-Disposer"); |
- thread.setDaemon(true); |
- thread.start(); |
- } |
- |
- public Disposer(final Disposable referent, final Disposable disposable) |
- { |
- super(referent, refQueue); |
- this.disposable = disposable; |
- synchronized (disposers) |
- { |
- this.disposer = disposers.add(this); |
- } |
- } |
- |
- public void dispose() |
- { |
- if (!this.disposed) |
- { |
- synchronized (disposers) |
- { |
- disposers.remove(this.disposer); |
- } |
- this.disposed = true; |
- this.disposable.dispose(); |
- } |
- } |
- |
- public boolean isDisposed() |
- { |
- return this.disposed; |
- } |
- |
- private static final class Cleaner implements Runnable |
- { |
- public Cleaner() |
- { |
- // empty |
- } |
- |
- @Override |
- public void run() |
- { |
- final ReferenceQueue<Disposable> refQueue = Disposer.refQueue; |
- for (;;) |
- { |
- try |
- { |
- ((Disposer)refQueue.remove()).dispose(); |
- } |
- catch (final Throwable t) |
- { |
- // |
- } |
- } |
- } |
- } |
-} |