humble-video-noarch/src/main/java/io/humble/ferry/JNIMemoryManager.java
public void startCollectionThread()
  {
    synchronized (this)
    {
      if (mCollectionThread != null)
        throw new RuntimeException("Thread already running");

      mCollectionThread = new Thread(new Runnable()
      {

        public void run()
        {
          JNIReference ref = null;
          try
          {
            while (true)
            {
              ref = (JNIReference) mRefQueue.remove();
              if (ref != null)
                ref.delete();
            }
          }
          catch (InterruptedException ex)
          {
            synchronized (JNIMemoryManager.this)
            {
              mCollectionThread = null;
              // reset the interruption
              Thread.currentThread().interrupt();
            }
            return;
          }

        }
      }, "Humble Ferry Collection Thread");
      mCollectionThread.setDaemon(true);
      mCollectionThread.start();
    }
  }
public void startCollectionThread()
  {
    synchronized (this)
    {
      if (mCollectionThread != null)
        throw new RuntimeException("Thread already running");

      mCollectionThread = new Thread(new Runnable()
      {

        public void run()
        {
          JNIReference ref = null;
          try
          {
            while (true)
            {
              ref = (JNIReference) mRefQueue.remove();
              if (ref != null)
                ref.delete();
            }
          }
          catch (InterruptedException ex)
          {
            synchronized (JNIMemoryManager.this)
            {
              mCollectionThread = null;
              // reset the interruption
              Thread.currentThread().interrupt();
            }
            return;
          }

        }
      }, "Humble Ferry Collection Thread");
      mCollectionThread.setDaemon(true);
      mCollectionThread.start();
    }
  }
public void startCollectionThread ( ) { synchronized ( this ) { if ( mCollectionThread != null ) throw new RuntimeException ( "Thread already running" ) ; mCollectionThread = new Thread ( new Runnable ( ) { public void run ( ) { JNIReference ref = null ; try { while ( true ) { ref = ( JNIReference ) mRefQueue . remove ( ) ; if ( ref != null ) ref . delete ( ) ; } } catch ( InterruptedException ex ) { synchronized ( JNIMemoryManager . this ) { mCollectionThread = null ; // reset the interruption Thread . currentThread ( ) . interrupt ( ) ; } return ; } } } , "Humble Ferry Collection Thread" ) ; mCollectionThread . setDaemon ( true ) ; mCollectionThread . start ( ) ; } }
Starts a new Ferry collection thread that will wake up whenever a memory
reference needs clean-up from native code.
<p>
This thread is not started by default as Ferry calls {@link #gc()}
internally whenever a new Ferry object is allocated. But if you're
caching Ferry objects and hence avoiding new allocations, you may want to
call this to ensure all objects are promptly collected.
</p>
<p>
This call is ignored if the collection thread is already running.
</p>
<p>
The thread can be stopped by calling {@link #stopCollectionThread()}, and
will also exit if interrupted by Java.
</p>
Starts a new Ferry collection thread that will wake up whenever a memory reference needs clean - up from native code . <p > This thread is not started by default as Ferry calls {