diff --git a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
index 5547c3c..6df38dd 100644
--- a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
+++ b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
@@ -34,6 +34,7 @@
   protected long seekOffset;
   protected boolean seekBackwards;
   protected boolean paused;
+  protected boolean isQuitting = false;
   protected double playbackSpeed;
 
   protected byte[] buffer;
@@ -76,6 +77,14 @@
     bufferPos = 0;
   }
 
+  // Force stream to finish any wait.
+  public void quit() {
+    isQuitting = true;
+    synchronized(this) {
+      notify();
+    }
+  }
+
   //
   // Basic methods overriding InputStream's methods.
   //
@@ -202,7 +211,7 @@
       }
     }
 
-    while (true) {
+    while (!isQuitting) {
       long timeDiff = startTime + timeOffset - System.currentTimeMillis();
       if (timeDiff <= 0) {
         break;
@@ -221,7 +230,7 @@
   // In paused mode, wait for external notification on this object.
   //
   private void waitWhilePaused() {
-    while (paused && !isSeeking()) {
+    while (paused && !isSeeking() && !isQuitting) {
       synchronized(this) {
         try {
           // Note: we call Observer.update(Observable,Object) method
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index 4b74889..490b2bc 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -68,6 +68,7 @@
   double playbackSpeed;
   boolean autoPlay;
   boolean showControls;
+  boolean isQuitting = false;
   int deferScreenUpdates;
 
   //
@@ -93,7 +94,7 @@
     if (inSeparateFrame)
       vncFrame.addWindowListener(this);
 
-    rfbThread = new Thread(this);
+    rfbThread = new Thread(this, "RfbThread");
     rfbThread.start();
   }
 
@@ -170,7 +171,7 @@
         vc.resizeEmbeddedApplet();
       }
 
-      while (true) {
+      while (!isQuitting) {
         try {
           setPaused(!autoPlay);
           rfb.fbs.setSpeed(playbackSpeed);
@@ -378,9 +379,14 @@
   // This method is called before the applet is destroyed.
   //
   public void destroy() {
+    isQuitting = true;
     vncContainer.removeAll();
     if (rfb != null) {
-      rfb = null;
+      rfb.quit();
+    }
+    try {
+      rfbThread.join();
+    } catch (InterruptedException e) {
     }
     if (inSeparateFrame) {
       vncFrame.dispose();
diff --git a/java/src/com/tightvnc/rfbplayer/RfbProto.java b/java/src/com/tightvnc/rfbplayer/RfbProto.java
index 952dc8d..c5af418 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbProto.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbProto.java
@@ -80,6 +80,16 @@
     newSession(url);
   }
 
+  // Force processing to quit
+  public void quit() {
+    fbs.quit();
+    try {
+      is.close();
+    } catch (IOException e) {
+      System.out.println("IOException quitting RfbProto: " + e);
+    }
+  }
+
   //
   // Open new session URL.
   //
