gpt4 book ai didi

java - java中BlockingQueue/ArrayBlockingQueue的序列化

转载 作者:搜寻专家 更新时间:2023-11-01 03:22:39 24 4
gpt4 key购买 nike

我需要为我的爬虫“序列化”一个大的 BlockingQueue(sizeof 10_000),其中包含 domanis 名称 (Strings(Objects)) - 例如,如果我要停止它,否则它会意外发生 - 这将有助于避免爬行那已经完成了。最好的方法是什么?在 NET 中,我对此类任务使用了二进制序列化(例如 protobuf)(它速度更快,序列化信息可视化对于理解不是那么重要 - 因此不需要 XML View )。但是如何在java中做到这一点?您可以引用 sample 吗?

最佳答案

BlockingQueue 只是一个接口(interface),不是具体类型。您序列化/反序列化具有具体类型的实例。这取决于您拥有的实例的动态类型是否实现了 Serializable

ArrayBlockingQueue 实现了 Serializable,这意味着您可以简单地使用 ObjectInputStream/ObjectOutputStream 对其进行序列化和反序列化:

保存一个ArrayBlockingQueue:

ArrayBlockingQueue queue = new ArrayBlockingQueue(10);

try (ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("queue.data"))) {
out.writeObject(queue);
}

读取持久化ArrayBlockingQueue:

ArrayBlockingQueue queue = null;

try (ObjectInputStream in = new ObjectInputStream (
new FileInputStream("queue.data"))) {
queue = in.readObject()
}

关于java - java中BlockingQueue/ArrayBlockingQueue的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25721500/

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