public static boolean timeout(int millis, @Nonnull Runnable action) {
		try {
			Future<?> future = run(action);
			return timeout(millis, future);
		} catch (Throwable t) {
			// Can be thrown by execution timeout
			return false;
		}
	}
Run a given action with a timeout.

@param millis
		Timeout in milliseconds.
@param action
		Runnable to execute.

@return {@code true} When thread completed before time.
recaf-core/src/main/java/software/coley/recaf/util/threading/ThreadUtil.java