package org.squirrelframework.foundation.fsm.threadsafe; import java.util.concurrent.CyclicBarrier; public class BarrierThread extends Thread { private CyclicBarrier entryBarrier; private CyclicBarrier exitBarrier; public BarrierThread(Runnable runnable, String name, CyclicBarrier entryBarrier, CyclicBarrier exitBarrier) { super(runnable, name); this.entryBarrier = entryBarrier; this.exitBarrier = exitBarrier; } @Override public void run() { try { entryBarrier.await(); super.run(); exitBarrier.await(); } catch (Exception e) { throw new RuntimeException(e); } } }