private void terminateIn(int millis) {

			// let the IO thread finish processing the stack info before failing
			GTimer.scheduleRunnable(millis, () -> {
				// we have no way to interrupt a blocking IO call :(
				synchronized (this) {
					// signal to the client thread to stop waiting; this IO thread
					// is a daemon, so it will not prevent JVM shutdown
					terminated = true;
					isDisposed = true;
					notifyAll();
				}
			});
		}
Waits the specified time before notifying the blocking client thread to give up
on the process to which this class is bound.
@param millis the timeout
Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/server/remote/ServerTestUtil.java