【发布时间】:2011-05-23 16:21:43
【问题描述】:
您好,我很好奇是否有办法检查 ArrayBlockingQuery 查询当前是否被锁定? 原因:我有一个服务器,它监听一个套接字,接收参数,处理它们,然后将一些结果返回给客户端。该服务器(假设它是服务器 A)在处理参数时打开与其他服务器(服务器 B)的会话,然后向 B 发送信息。连接到 B 时只能创建一个会话,但 A 可以接受多个客户端连接。因为 ArrayBlockingQueue 用于存储参数,其他一些线程通过队列运行并将它们一一发送给 B。
我需要执行该功能 - 当 ArrayBlockingQueue 为空并且当前没有处理任何内容并且客户端数据发送到 A 然后立即处理 - 将数据发送到 B 服务器,处理来自 B 的响应,然后如果 ArrayBlockingQuery 则 A 返回响应给客户端不为空并且处理了某些内容,然后只需将参数添加到队列并将其他响应从 A 发送到客户端。这就是为什么我需要知道是否有办法检查 ArrayBlockingQueue 是否被锁定或线程当前正在处理的队列元素。
谢谢!
【问题讨论】:
-
你的意思是
ArrayBlockingQueue吗? -
是的,我的意思是 ArrayBlockingQueue 感谢您指出我的错误。
-
如果您仅依靠队列为空来做出“处理或委托”决定,它将永远保持为空,因为对于每个下一个请求,您仍然会发现队列为空并且“立即处理” "。
标签: java multithreading queue