小编soh*_*emy的帖子

FutureTask.get方法永远阻塞,虽然我从另一个线程设置它的值

我试图使用下面的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)

java multithreading

1
推荐指数
1
解决办法
283
查看次数

标签 统计

java ×1

multithreading ×1