diff --git a/router/java/src/net/i2p/router/JobQueue.java b/router/java/src/net/i2p/router/JobQueue.java
index 6abbbe15198a41d750bfc65613238bc414b3e2ed..5ec9e7e6561d6dae20cbc9bd1c8095b7a987e3d7 100644
--- a/router/java/src/net/i2p/router/JobQueue.java
+++ b/router/java/src/net/i2p/router/JobQueue.java
@@ -53,7 +53,7 @@ public class JobQueue {
     /** will we allow the # job runners to grow beyond 1? */
     private boolean _allowParallelOperation;
     /** have we been killed or are we alive? */
-    private boolean _alive;
+    private volatile boolean _alive;
     
     private final Object _jobLock;
     private volatile long _nextPumperRun;
diff --git a/router/java/src/net/i2p/router/JobQueueRunner.java b/router/java/src/net/i2p/router/JobQueueRunner.java
index 12cd2b2dded25dbe70d991d1228292bca84c8fee..b9ae2363d7c2a13e227289f9c226e1fa5fe36619 100644
--- a/router/java/src/net/i2p/router/JobQueueRunner.java
+++ b/router/java/src/net/i2p/router/JobQueueRunner.java
@@ -6,13 +6,13 @@ import net.i2p.util.Log;
 class JobQueueRunner implements Runnable {
     private final Log _log;
     private final RouterContext _context;
-    private boolean _keepRunning;
+    private volatile boolean _keepRunning;
     private final int _id;
-    private Job _currentJob;
-    private Job _lastJob;
-    private long _lastBegin;
-    private long _lastEnd;
-    private int _state;
+    private volatile Job _currentJob;
+    private volatile Job _lastJob;
+    private volatile long _lastBegin;
+    private volatile long _lastEnd;
+    private volatile int _state;
     
     public JobQueueRunner(RouterContext context, int id) {
         _context = context;