java异步发布数据结构

7jmck4yq  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(393)

我有一个android应用程序,目前可以打开一个webview活动。当它这样做时,它会启动一个异步调用,在webview中加载网页的同时下载一些数据。
一旦网页和数据都准备好了,我想把数据发送到网络视图。
我在找一个好的数据结构来做这个。目前我正在做这样的事情:

private String data;
private AtomicBoolean bothReady = new AtomicBoolean(false);

public void dataDownloaded(String data) {
    this.data = data;
    sendDataIfReady();
}

public void pageLoaded() {
    sendDataIfReady();
}

private void sendDataIfReady() {
    if (bothReady.getAndSet(true)) {
        sendData(this.data);
    }
}

这是一个简化版本,但这是它的要点。这感觉是一种笨拙的方式,我想知道java中是否有一种好的数据结构,它将准备好的数据排队,然后在页面准备好时发送,而不管哪个先完成(显然还处理竞争条件等)。
谢谢你的帮助。

3mpgtkmj

3mpgtkmj1#

对于异步请求,我建议您使用scheduledexecutorservice:

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(20);

然后可以定义asyncnotice类:

class AsyncNotice implements Runnable {
    @Override
    public void run() {
        // do some needed work
    }
}

然后你可以这样做:

scheduler.schedule(new AsyncNotice(), 5, TimeUnit.SECONDS);

或者

scheduler.execute(new AsyncNotice());

这将返回scheduledfuture,因此您甚至可以在将来取消它。

相关问题