diff src/fschmidt/util/java/FastFuture.java @ 68:00520880ad02

add fschmidt source
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 05 Oct 2025 17:24:15 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/fschmidt/util/java/FastFuture.java	Sun Oct 05 17:24:15 2025 -0600
@@ -0,0 +1,50 @@
+package fschmidt.util.java;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.TimeUnit;
+
+
+public final class FastFuture<V> implements Future<V> {
+	private volatile V result;
+	private volatile FutureTask<V> futureTask;
+
+	public FastFuture(Callable<V> callable) {
+		futureTask = new FutureTask<V>(callable);
+	}
+
+	public void run() {
+		FutureTask<V> ft = futureTask;
+		if( ft != null ) {
+			ft.run();
+		}
+	}
+
+	public boolean cancel(boolean mayInterruptIfRunning) {
+		throw new UnsupportedOperationException();
+	}
+
+	public boolean isCancelled() {
+		return false;
+	}
+
+	public boolean isDone() {
+		return futureTask == null;
+	}
+
+	public V get() throws InterruptedException, ExecutionException {
+		FutureTask<V> ft = futureTask;
+		if( ft != null ) {
+			result = ft.get();
+			futureTask = null;
+		}
+		return result;
+	}
+
+	public V get(long timeout,TimeUnit unit) {
+		throw new UnsupportedOperationException();
+	}
+
+}