当前位置: 首页 > 知识库问答 >
问题:

同步队列?

崔棋
2023-03-14

我有两个线程用于在线游戏制作。一个线程接收两个 X 和 Y 数字,另一个线程将 X 和 Y 数字发送给登录到服务器的每个人。基本上,我需要一个队列,这将允许第一个线程将2D数组添加到队列中,并继续这样做,同时,将数组拉出并从队列中删除数组以用于发送给其他玩家。有没有办法做到这一点?我知道我需要一个同步的队列,但是我如何同步一个,这被称为阻塞队列吗?

总的来说,我需要一个同步的队列,这将允许两个线程将东西扔进去并取出东西。可能吗?

-丹

共有1个答案

皮安顺
2023-03-14

阻塞队列是这样一种队列,其中:

  1. 向其添加元素,在队列上没有可用空间的情况下阻止调用方线程,直到元素被删除(由其他线程删除);
  2. 从中删除元素,在没有任何要删除的元素的情况下阻止调用方线程,直到它添加元素(由其他线程添加)。
 类似资料:
  • 我可以问一个新手Java问题吗? 我正在从网上下载一些文件。此方法下载(url位置)被多次调用。 我添加了“同步”,这样下载就会一个接一个地发生。(不是同时发生多个下载)。 我猜即使下载()被多次调用,同步也会阻塞其他线程,直到第一个线程完成。 上面的代码会起作用吗?还是我必须实现队列?并逐个取消排队? 同步可以阻止“足够”的线程吗?(30? 50?)还是有限制?

  • 问题内容: Linux中有等待队列为FIFO的锁吗?这似乎是一件显而易见的事情,但是我刚刚发现pthread互斥锁不是FIFO,信号量显然也不是FIFO(我正在研究内核2.4(家庭作业))… Linux是否具有带有FIFO等待队列的锁,或者是否有简单的方法可以利用现有机制来建立锁? 问题答案: 这是创建基于pthreads原语的简单排队“票证锁”的方法。它应该给您一些想法:

  • 我一直在做一个需要同步队列的项目,因为我的程序是多线程的,线程可能会访问这个队列。我使用arraylist来实现这一点,但我似乎遇到了一些问题,线程陷入僵局。我不知道排队是否是原因,但我只是想检查一下: 编辑:即使使用LinkedBlockingQueue,我也会陷入与之前相同的循环中。我认为这是因为有一个线程正在等待队列被填充,但它从来没有这样做,因为其他功能已经完成运行…有什么想法吗???

  • 主要内容:1 ConcurrentLinkedQueue的概述,2 ConcurrentLinkedQueue的实现,2.1 基本结构,2.2 构造器,2.3 入队操作,2.4 出队操作,2.5 过程详解,2.6 获取操作,2.7 其他操作,3 ConcurrentLinkedQueue的总结基于JDK1.8详细介绍了ConcurrentLinkedQueue的底层源码实现,包括同步原理、入队操作、出队操作、获取操作等。 1 ConcurrentLinkedQueue的概述 public cla

  • 异步队列区别于 RabbitMQ Kafka 等消息队列,它只提供一种 异步处理 和 异步延时处理 的能力,并 不能 严格地保证消息的持久化和 不支持 完备的 ACK 应答机制。 安装 composer require hyperf/async-queue 配置 配置文件位于 config/autoload/async_queue.php,如文件不存在可自行创建。 暂时只支持 Redis Dri

  • 我试图在artemis上做几个样本,下面的问题的任何帮助都是伟大的更好的系统设计。 > 如果我们选择通过CLI/Web控制台选项创建队列,那么存储在绑定日志中的队列信息是否会因为我看不到代理xml得到更新?如果是这样的话,broker实例在引导时加载broker.xml中存在的所有地址以及通过CLI创建的地址?如有理解,请更正。我希望有自动创建队列的方式,并寻找最佳选择,而无需重新启动服务器。 我