diff --git a/apps/sam/java/src/net/i2p/sam/SAMBridge.java b/apps/sam/java/src/net/i2p/sam/SAMBridge.java
index 0dc1b79a857fd83b02024016c93d7c0882c6a6c1..ee7e33bb4a442a014c2732fc4bd39f1665056718 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMBridge.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMBridge.java
@@ -24,7 +24,7 @@ import java.util.Properties;
 
 import net.i2p.data.DataFormatException;
 import net.i2p.data.Destination;
-import net.i2p.util.I2PThread;
+import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
 
 /**
@@ -223,9 +223,9 @@ public class SAMBridge implements Runnable {
             opts = parseOptions(args, portIndex+1);
         }
         SAMBridge bridge = new SAMBridge(host, port, opts, keyfile);
-        I2PThread t = new I2PThread(bridge, "SAMListener");
+        I2PAppThread t = new I2PAppThread(bridge, "SAMListener");
         if (Boolean.valueOf(System.getProperty("sam.shutdownOnOOM", "false")).booleanValue()) {
-            I2PThread.addOOMEventListener(new I2PThread.OOMEventListener() {
+            t.addOOMEventThreadListener(new I2PAppThread.OOMEventListener() {
                 public void outOfMemory(OutOfMemoryError err) {
                     err.printStackTrace();
                     System.err.println("OOMed, die die die");
diff --git a/apps/sam/java/src/net/i2p/sam/SAMHandler.java b/apps/sam/java/src/net/i2p/sam/SAMHandler.java
index 4b90dbe0f04e0aff5f332432b988bce83f1e3838..64d824a5782dc8eb0622e994be704997f03a8a65 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMHandler.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMHandler.java
@@ -14,7 +14,7 @@ import java.io.OutputStream;
 import java.net.Socket;
 import java.util.Properties;
 
-import net.i2p.util.I2PThread;
+import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
 
 /**
@@ -28,7 +28,7 @@ public abstract class SAMHandler implements Runnable {
 
     private final static Log _log = new Log(SAMHandler.class);
 
-    protected I2PThread thread = null;
+    protected I2PAppThread thread = null;
     protected SAMBridge bridge = null;
 
     private Object socketWLock = new Object(); // Guards writings on socket
@@ -68,7 +68,7 @@ public abstract class SAMHandler implements Runnable {
      *
      */
     public final void startHandling() {
-        thread = new I2PThread(this, "SAMHandler");
+        thread = new I2PAppThread(this, "SAMHandler");
         thread.start();
     }
     
diff --git a/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java b/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
index 0cab9c4c8c2c970d98cf2f60c3f1ec79c9e745c4..b29b2f84c5f214c05728441a9407fc0caee9b5af 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
@@ -22,7 +22,7 @@ import net.i2p.data.Base64;
 import net.i2p.data.DataFormatException;
 import net.i2p.data.Destination;
 import net.i2p.util.HexDump;
-import net.i2p.util.I2PThread;
+import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
 
 /**
@@ -74,7 +74,7 @@ public abstract class SAMMessageSession {
 
         handler = new SAMMessageSessionHandler(destStream, props);
 
-        Thread t = new I2PThread(handler, "SAMMessageSessionHandler");
+        Thread t = new I2PAppThread(handler, "SAMMessageSessionHandler");
         t.start();
     }
 
diff --git a/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java b/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java
index 8200d7b843634f8a663c7513655c758eab45c743..280562e48ed9dee401d4ca0a6e328bafa970c0ab 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java
@@ -35,7 +35,7 @@ import net.i2p.data.DataFormatException;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
 import net.i2p.util.ByteCache;
-import net.i2p.util.I2PThread;
+import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
 
 /**
@@ -160,7 +160,7 @@ public class SAMStreamSession {
 
         if (canReceive) {
             server = new SAMStreamSessionServer();
-            Thread t = new I2PThread(server, "SAMStreamSessionServer");
+            Thread t = new I2PAppThread(server, "SAMStreamSessionServer");
 
             t.start();
         }
@@ -315,9 +315,9 @@ public class SAMStreamSession {
             sendersMap.put(new Integer(id), sender);
         }
 
-        I2PThread t = new I2PThread(reader, "SAMReader" + id);
+        I2PAppThread t = new I2PAppThread(reader, "SAMReader" + id);
         t.start();
-        t = new I2PThread(sender, "SAMSender" + id);
+        t = new I2PAppThread(sender, "SAMSender" + id);
         t.start();
 
         return id;
diff --git a/apps/sam/java/src/net/i2p/sam/SAMv2StreamSession.java b/apps/sam/java/src/net/i2p/sam/SAMv2StreamSession.java
index 379bea58c0236677d3f87ce8715f2d7b55cdc616..de5b7851bc7de434f29dac13e3ac2c175893413a 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMv2StreamSession.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMv2StreamSession.java
@@ -26,7 +26,7 @@ import net.i2p.data.DataFormatException;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
 import net.i2p.util.ByteCache;
-import net.i2p.util.I2PThread;
+import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
 
 /**
@@ -121,7 +121,7 @@ public class SAMv2StreamSession extends SAMStreamSession
 
 			connector = new StreamConnector ( id, d, opts );
 			
-			I2PThread connectThread = new I2PThread ( connector, "StreamConnector" + id ) ;
+			I2PAppThread connectThread = new I2PAppThread ( connector, "StreamConnector" + id ) ;
 
 			connectThread.start() ;
 
diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMReader.java b/apps/sam/java/src/net/i2p/sam/client/SAMReader.java
index e3736d36234142b3abb37ecf83a8c8a5c407b0ed..0421a64580590fdec99859cd2cc4731a1de44960 100644
--- a/apps/sam/java/src/net/i2p/sam/client/SAMReader.java
+++ b/apps/sam/java/src/net/i2p/sam/client/SAMReader.java
@@ -8,7 +8,7 @@ import java.util.StringTokenizer;
 
 import net.i2p.I2PAppContext;
 import net.i2p.data.DataHelper;
-import net.i2p.util.I2PThread;
+import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
 
 /**
@@ -29,7 +29,7 @@ public class SAMReader {
     
     public void startReading() {
         _live = true;
-        I2PThread t = new I2PThread(new Runner(), "SAM reader");
+        I2PAppThread t = new I2PAppThread(new Runner(), "SAM reader");
         t.start();
     }
     public void stopReading() { _live = false; }
diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java
index 207c9446ca834cff4a71864e665adc6ae62bb413..4e9d1133b063ed52e47c27b1d9143476718add2b 100644
--- a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java
+++ b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java
@@ -10,7 +10,7 @@ import java.util.Map;
 
 import net.i2p.I2PAppContext;
 import net.i2p.data.DataHelper;
-import net.i2p.util.I2PThread;
+import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
 
 /**
@@ -145,7 +145,7 @@ public class SAMStreamSend {
         Sender sender = new Sender();
         boolean ok = sender.openConnection();
         if (ok) {
-            I2PThread t = new I2PThread(sender, "Sender");
+            I2PAppThread t = new I2PAppThread(sender, "Sender");
             t.start();
         }
     }