gpt4 book ai didi

java - 等待数据准备好(Java)

转载 作者:行者123 更新时间:2023-12-01 18:11:57 25 4
gpt4 key购买 nike

我有一个可以读取数据的蓝牙套接字。

我有三个对象正在尝试获取数据。蓝牙 channel 获取一个整数,该整数指定哪个对象应接收数据。

我的问题:

如何让每个对象“等待”直到数据可用。因此每个对象都会调用蓝牙对象的“读取”方法。蓝牙对象将继续在其线程上读取数据,但应通知每个对象其数据已准备好(每个对象都处于阻塞状态,等待其输入)。

我应该使用等待/通知模式,即 while 循环来等待,直到标记数据已准备好?

想法?谢谢。

最佳答案

一个简单的方法是为每个等待的对象使用 BlockingQueue。当您读取线程有一个新对象时,您可以将其添加到该对象的队列中。

// for the publisher
blockingQueue.offer(message);

// for the consumer
Object p = blockingQueue.take();

另一种方法是不对每个参与者或对象使用线程,而是注册一个消费者。

// for the blue tooth reader
registerListener(key, consumer);

这样,读取蓝牙的线程也会调用为每个“对象”执行操作所需的代码

关于java - 等待数据准备好(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32296467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com