NutzCN Logo
问答 Http工具类Bug
发布于 2794天前 作者 qq_16dd5808 1686 次浏览 复制 上一个帖子 下一个帖子
标签:

源码中是这样写的

public static ExecutorService setup(ExecutorService es) {
        if (es != null)
            return es;
        if (es == null)
            es = Executors.newFixedThreadPool(64);
        Sender.es = es;
        return es;
    }

那么我如果这样初始化

int taskSize = 1000;
        ExecutorService es = Executors.newFixedThreadPool(taskSize);
        Sender.setup(es);

那么在执行的时候

Future<Response> response = Sender.create("http://baidu.com").setTimeout(7 * 1000).send(new Callback<Response>() {
                @Override
                public void invoke(Response res) {
                    System.out.println(Thread.currentThread().getName() + ":" + res.getStatus());
                }
            });

后台会报错

java.lang.IllegalStateException: Sender ExecutorService is null, Call setup first

也就是

Sender.setup(es);

如果传参,是没用的。。

4 回复

因为在send的时候,直接使用了

public Future<Response> send(Callback<Response> callback) throws HttpException {
        if (es == null)
            throw new IllegalStateException("Sender ExecutorService is null, Call setup first");
        this.callback = callback;
        return es.submit(this);
    }

如果Sender.setup(es);这样初始化的,那么这个es永远为null..

我的锅, 这就改

@wendal 我还发现了问题,一会我实验完毕的时候,再来提出来。稍等我几分钟

添加回复
请先登陆
回到顶部