我试图使用下面的FutureResult类在两个线程之间发出信号,该类扩展了FutureTask类.运行脚本时,它会打印以下结果.
发送:0
SENT:0 POLL:FutureResult @ 513431
SIGNALED:FutureResult @ 513431
然后程序永远挂断.我希望FutureResult实例应该从它的阻塞get方法返回值.然后在控制台中打印结果.但FutureResult.get永远阻止.
import java.util.concurrent.*;
/**
* Created by someone on 20/08/2015.
*/
final public class FutureResult<T> extends FutureTask<T> {
private static final Object SS = "SS";
public FutureResult() {
super(() -> null);
}
public void signal(final T value) {
set(value);
}
public void signalError(final Throwable throwable) {
setException(throwable);
}
public static void main(String... args) throws Exception {
final ArrayBlockingQueue<FutureResult> queue = new ArrayBlockingQueue<>(1000000);
new Thread(() -> {
while (true) {
try { …Run Code Online (Sandbox Code Playgroud)