diff --git a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/AbstractThread.java b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/AbstractThread.java
index b05e40de..a40cc9df 100644
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/AbstractThread.java
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/AbstractThread.java
@@ -26,7 +26,7 @@
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-public class AbstractThread extends Thread {
+public abstract class AbstractThread extends Thread {
     private static final AtomicInteger ID = new AtomicInteger();
 
     protected volatile Throwable throwable;
@@ -36,6 +36,9 @@ public AbstractThread() {
         setName("jcstress-worker-" + ID.incrementAndGet());
     }
 
+    @Override
+    public abstract void run();
+
     public Throwable throwable() { return throwable; }
 
 }