org.objectfabric.PlatformFuture Maven / Gradle / Ivy
/**
* This file is part of ObjectFabric (http://objectfabric.org).
*
* ObjectFabric is licensed under the Apache License, Version 2.0, the terms
* of which may be found at http://www.apache.org/licenses/LICENSE-2.0.html.
*
* Copyright ObjectFabric Inc.
*
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
package org.objectfabric;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
class PlatformFuture extends FutureTask {
public PlatformFuture() {
super(new Callable() {
@Override
public V call() throws Exception {
return null;
}
});
}
final void getVoid() {
try {
get();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public V get() throws InterruptedException, ExecutionException {
if (Debug.THREAD_LOG_BLOCKING)
Log.write("Thread blocked");
V v = super.get();
if (Debug.THREAD_LOG_BLOCKING)
Log.write("Thread unblocked");
return v;
}
@Override
public void set(V value) {
super.set(value);
}
@Override
protected final void setException(Throwable t) {
setException((Exception) t);
}
public void setException(Exception e) {
super.setException(e);
}
}