diff --git a/components/net/sf/briar/db/DatabaseCleanerImpl.java b/components/net/sf/briar/db/DatabaseCleanerImpl.java
index b4199a6b087e9b260e8ffd5b2ec514b5a9558aac..e1242850f5b4afd82122b72f31ce37117ce7794d 100644
--- a/components/net/sf/briar/db/DatabaseCleanerImpl.java
+++ b/components/net/sf/briar/db/DatabaseCleanerImpl.java
@@ -37,8 +37,7 @@ class DatabaseCleanerImpl implements DatabaseCleaner, Runnable {
 						try {
 							wait(msBetweenSweeps);
 						} catch(InterruptedException e) {
-							if(LOG.isLoggable(Level.WARNING))
-								LOG.warning(e.getMessage());
+							Thread.currentThread().interrupt();
 						}
 					}
 				} catch(DbException e) {
diff --git a/components/net/sf/briar/db/JdbcDatabase.java b/components/net/sf/briar/db/JdbcDatabase.java
index 7ff982272d831f989f83748bd261a721b7843ebd..c9d40d7d5d4fd1989ca201ceb96a802f1f68c452 100644
--- a/components/net/sf/briar/db/JdbcDatabase.java
+++ b/components/net/sf/briar/db/JdbcDatabase.java
@@ -393,8 +393,7 @@ abstract class JdbcDatabase implements Database<Connection> {
 				try {
 					connections.wait();
 				} catch(InterruptedException e) {
-					if(LOG.isLoggable(Level.WARNING))
-						LOG.warning(e.getMessage());
+					Thread.currentThread().interrupt();
 				}
 			}
 			txn = connections.poll();
@@ -462,8 +461,7 @@ abstract class JdbcDatabase implements Database<Connection> {
 				try {
 					connections.wait();
 				} catch(InterruptedException e) {
-					if(LOG.isLoggable(Level.WARNING))
-						LOG.warning(e.getMessage());
+					Thread.currentThread().interrupt();
 				}
 				for(Connection c : connections) c.close();
 				openConnections -= connections.size();
diff --git a/components/net/sf/briar/lifecycle/WindowsShutdownManagerImpl.java b/components/net/sf/briar/lifecycle/WindowsShutdownManagerImpl.java
index 1949213209ff06b7400324623a70456294ea18f9..a84b52440b52ec61517d0de8853a2b703e6e429d 100644
--- a/components/net/sf/briar/lifecycle/WindowsShutdownManagerImpl.java
+++ b/components/net/sf/briar/lifecycle/WindowsShutdownManagerImpl.java
@@ -77,7 +77,7 @@ class WindowsShutdownManagerImpl extends ShutdownManagerImpl {
 			try {
 				hook.join();
 			} catch(InterruptedException e) {
-				if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage());
+				Thread.currentThread().interrupt();
 			}
 		}
 	}
diff --git a/components/net/sf/briar/plugins/PollerImpl.java b/components/net/sf/briar/plugins/PollerImpl.java
index 708a56baee845e10654f4044cbd700f7573a1acc..593b625a2bcf2203ab53b65eb6b25826c911dfc7 100644
--- a/components/net/sf/briar/plugins/PollerImpl.java
+++ b/components/net/sf/briar/plugins/PollerImpl.java
@@ -52,8 +52,7 @@ class PollerImpl implements Poller, Runnable {
 					try {
 						wait(p.time - now);
 					} catch(InterruptedException e) {
-						if(LOG.isLoggable(Level.WARNING))
-							LOG.warning(e.getMessage());
+						Thread.currentThread().interrupt();
 					}
 				}
 			}
diff --git a/components/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java b/components/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
index ff1bccd6e0ad1ff754672888b18dabc7409fb158..a06c13a2625450a8c75a994461cd18eb834478fc 100644
--- a/components/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
+++ b/components/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
@@ -378,7 +378,7 @@ class BluetoothPlugin extends AbstractPlugin implements StreamPlugin {
 			Thread.sleep(c.getTimeout());
 			scn.close();
 		} catch(InterruptedException e) {
-			if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage());
+			Thread.currentThread().interrupt();
 		} catch(IOException e) {
 			if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage());
 		}
diff --git a/components/net/sf/briar/plugins/bluetooth/ConnectionCallback.java b/components/net/sf/briar/plugins/bluetooth/ConnectionCallback.java
index fdcaebca11caeafab33553d5fab274e14e823cf6..3e75bd2b371abcb22c5431b4fb5f253c9faafe43 100644
--- a/components/net/sf/briar/plugins/bluetooth/ConnectionCallback.java
+++ b/components/net/sf/briar/plugins/bluetooth/ConnectionCallback.java
@@ -37,7 +37,7 @@ class ConnectionCallback {
 			try {
 				wait(end - now);
 			} catch(InterruptedException e) {
-				if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage());
+				Thread.currentThread().interrupt();
 			}
 			now = System.currentTimeMillis();
 		}
diff --git a/components/net/sf/briar/plugins/bluetooth/ContactListener.java b/components/net/sf/briar/plugins/bluetooth/ContactListener.java
index 9b77704e0ef254cc3fcfda31fd250e7ea52506d3..c5e765cb112afb21ee6cd84a3ba721ddd77868c8 100644
--- a/components/net/sf/briar/plugins/bluetooth/ContactListener.java
+++ b/components/net/sf/briar/plugins/bluetooth/ContactListener.java
@@ -38,7 +38,7 @@ class ContactListener extends AbstractListener {
 		try {
 			finished.await();
 		} catch(InterruptedException e) {
-			if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage());
+			Thread.currentThread().interrupt();
 		}
 		return urls;
 	}
diff --git a/components/net/sf/briar/plugins/bluetooth/InvitationListener.java b/components/net/sf/briar/plugins/bluetooth/InvitationListener.java
index 9d258d87d1245eec096e85bcd26b81eaac2b03e5..993086a798a96f2e7e466ce73dfa1c1801d6dccb 100644
--- a/components/net/sf/briar/plugins/bluetooth/InvitationListener.java
+++ b/components/net/sf/briar/plugins/bluetooth/InvitationListener.java
@@ -30,7 +30,7 @@ class InvitationListener extends AbstractListener {
 		try {
 			finished.await();
 		} catch(InterruptedException e) {
-			if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage());
+			Thread.currentThread().interrupt();
 		}
 		return url;
 	}
diff --git a/components/net/sf/briar/plugins/file/FileListener.java b/components/net/sf/briar/plugins/file/FileListener.java
index e98e0f34210d697ea701106620355ce4843a82ce..367764ad2de2362b1d55c5942306e35989e97529 100644
--- a/components/net/sf/briar/plugins/file/FileListener.java
+++ b/components/net/sf/briar/plugins/file/FileListener.java
@@ -3,14 +3,9 @@ package net.sf.briar.plugins.file;
 import java.io.File;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 class FileListener {
 
-	private static final Logger LOG =
-		Logger.getLogger(FileListener.class.getName());
-
 	private final String filename;
 	private final long end;
 	private final CountDownLatch finished = new CountDownLatch(1);
@@ -27,7 +22,7 @@ class FileListener {
 		try {
 			finished.await(end - now, TimeUnit.MILLISECONDS);
 		} catch(InterruptedException e) {
-			if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage());
+			Thread.currentThread().interrupt();
 		}
 		return file;
 	}
diff --git a/components/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java b/components/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
index 577449bdfa0e00ae169b2dbd8dacd22a5b2fe9fd..72f9e9eaea1c1f7309d86b69321a8dde331a63e0 100644
--- a/components/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
+++ b/components/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
@@ -3,14 +3,9 @@ package net.sf.briar.plugins.file;
 import java.io.File;
 import java.io.IOException;
 import java.util.Collection;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 class PollingRemovableDriveMonitor implements RemovableDriveMonitor, Runnable {
 
-	private static final Logger LOG =
-		Logger.getLogger(PollingRemovableDriveMonitor.class.getName());
-
 	private final RemovableDriveFinder finder;
 	private final long pollingInterval;
 	private final Object pollingLock = new Object();
@@ -53,8 +48,7 @@ class PollingRemovableDriveMonitor implements RemovableDriveMonitor, Runnable {
 					try {
 						pollingLock.wait(pollingInterval);
 					} catch(InterruptedException e) {
-						if(LOG.isLoggable(Level.WARNING))
-							LOG.warning(e.getMessage());
+						Thread.currentThread().interrupt();
 					}
 				}
 				if(!running) return;
diff --git a/components/net/sf/briar/transport/FrameScheduler.java b/components/net/sf/briar/transport/FrameScheduler.java
index 94bc075549199b1e6e1e435f817bfadcfacc452f..2b0d0a9b6ed448edd233b7cc0a8ad75b5e515128 100644
--- a/components/net/sf/briar/transport/FrameScheduler.java
+++ b/components/net/sf/briar/transport/FrameScheduler.java
@@ -2,9 +2,6 @@ package net.sf.briar.transport;
 
 import static net.sf.briar.api.transport.TransportConstants.MAX_FRAME_LENGTH;
 
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
 /**
  * A thread that calls the writeFullFrame() method of a PaddedConnectionWriter
  * at regular intervals. The interval between calls is determined by a target
@@ -13,9 +10,6 @@ import java.util.logging.Logger;
  */
 class FrameScheduler extends Thread {
 
-	private static final Logger LOG =
-		Logger.getLogger(FrameScheduler.class.getName());
-
 	private final PaddedConnectionWriter writer;
 	private final int millisPerFrame;
 
@@ -34,8 +28,7 @@ class FrameScheduler extends Thread {
 				try {
 					Thread.sleep(nextCall - now);
 				} catch(InterruptedException e) {
-					if(LOG.isLoggable(Level.WARNING))
-						LOG.warning(e.getMessage());
+					Thread.currentThread().interrupt();
 				}
 			}
 			lastCall = System.currentTimeMillis();
diff --git a/components/net/sf/briar/transport/PaddedConnectionWriter.java b/components/net/sf/briar/transport/PaddedConnectionWriter.java
index 52e4430646df2c134fb4fa9870ffa0ebf7a3e8b7..ae61f11bfae438c68a6025a92b5f98cfe288879f 100644
--- a/components/net/sf/briar/transport/PaddedConnectionWriter.java
+++ b/components/net/sf/briar/transport/PaddedConnectionWriter.java
@@ -108,7 +108,7 @@ class PaddedConnectionWriter extends ConnectionWriterImpl {
 		try {
 			wait();
 		} catch(InterruptedException e) {
-			throw new IOException(e.getMessage());
+			Thread.currentThread().interrupt();
 		}
 		if(exception != null) throw exception;
 	}
diff --git a/components/net/sf/briar/transport/stream/StreamConnection.java b/components/net/sf/briar/transport/stream/StreamConnection.java
index 18a2c918a94d0bb77093539dc849e5727c9b5122..b43ada49f1d47a914dba8763c9105589fd9a969c 100644
--- a/components/net/sf/briar/transport/stream/StreamConnection.java
+++ b/components/net/sf/briar/transport/stream/StreamConnection.java
@@ -218,8 +218,7 @@ abstract class StreamConnection implements DatabaseListener {
 							try {
 								wait();
 							} catch(InterruptedException e) {
-								if(LOG.isLoggable(Level.WARNING))
-									LOG.warning(e.getMessage());
+								Thread.currentThread().interrupt();
 							}
 						}
 						flags = writerFlags;
@@ -258,8 +257,7 @@ abstract class StreamConnection implements DatabaseListener {
 							try {
 								wait();
 							} catch(InterruptedException e) {
-								if(LOG.isLoggable(Level.WARNING))
-									LOG.warning(e.getMessage());
+								Thread.currentThread().interrupt();
 							}
 						}
 						flags = writerFlags;
diff --git a/test/net/sf/briar/LockFairnessTest.java b/test/net/sf/briar/LockFairnessTest.java
index 081c89fc71911198a4a43814bdc1e746bd4095b9..e72c605e0594b851e0af1ff90348447f1659198b 100644
--- a/test/net/sf/briar/LockFairnessTest.java
+++ b/test/net/sf/briar/LockFairnessTest.java
@@ -77,7 +77,7 @@ public class LockFairnessTest extends TestCase {
 				Thread.sleep(sleepTime);
 				finished.add(this);
 			} catch(InterruptedException e) {
-				e.printStackTrace();
+				fail();
 			} finally {
 				lock.readLock().unlock();
 			}
@@ -101,7 +101,7 @@ public class LockFairnessTest extends TestCase {
 				Thread.sleep(sleepTime);
 				finished.add(this);
 			} catch(InterruptedException e) {
-				e.printStackTrace();
+				fail();
 			} finally {
 				lock.writeLock().unlock();
 			}
diff --git a/test/net/sf/briar/lifecycle/WindowsShutdownManagerImplTest.java b/test/net/sf/briar/lifecycle/WindowsShutdownManagerImplTest.java
index 42795b4ca2b80ab81f5cb5cf361e05a57012a5a0..ce872e97dec7983b0b8af3bd8ca1a076f5ac0c4b 100644
--- a/test/net/sf/briar/lifecycle/WindowsShutdownManagerImplTest.java
+++ b/test/net/sf/briar/lifecycle/WindowsShutdownManagerImplTest.java
@@ -32,7 +32,7 @@ public class WindowsShutdownManagerImplTest extends ShutdownManagerImplTest {
 				Thread.sleep(100);
 				finished = true;
 			} catch(InterruptedException e) {
-				// Don't finish
+				fail();
 			}
 		}
 	}