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

寻求关于分享烦躁老板/员工资源的建议

白晋鹏
2023-03-14

上下文: Netty 3.6.3。最终,Java1.7,Scala 2.9. x

为了最大限度地减少(可能空闲的)线程数量,我想与不同的NIO套接字通道工厂(TCP)和一个NioDatagramChannelFactory共享NIO客户端/服务器和工作池。我使用至少两个(或三个与Finagle堆栈)服务器/客户端引导集,每个都有自己的NIO套接字通道工厂。为每个老板和工作池使用新的缓存线程池会导致线程负载,而这些线程大部分时间都不会使用。粗略的目标是将所有引导/通道工厂的工人数量限制在2*CPU核心数量和CPU核心数量的老板数量。

我正在尝试切换到NioServer/ClientBossPool和niowerpool,以获得我自己的一套引导。但是,根据底层ThreadPoolExecutor的配置,关闭引导会导致主线程在AbstractNioSelector关闭闩锁上永远等待。

class NioClientBossPoolTest {

  @Test def shutdown() {
    val corePoolSize = 1
    val maxPoolSize = Integer.MAX_VALUE
    val keepAliveSeconds = 60
    val keepAliveUnit = TimeUnit.SECONDS

    val blocking = true
    val queue: BlockingQueue[Runnable] =
      if(blocking) new LinkedBlockingQueue[Runnable](Integer.MAX_VALUE)
      else new SynchronousQueue[Runnable]()

    val executor = new ThreadPoolExecutor(corePoolSize,
        maxPoolSize,
        keepAliveSeconds,
        keepAliveUnit,
        queue)

    val clientBossPool = new NioClientBossPool(executor, 1) // B
    new NioServerBossPool(executor, 1) // C
    val workerPool = new NioWorkerPool(executor, 1) // A

    val channelFactory = new NioClientSocketChannelFactory(clientBossPool, workerPool)
    val bootstrap = new ClientBootstrap(channelFactory)

    // hangs waiting for shutdown latch in AbstractNioSelector (NioWorker or NioClientBoss
    // depending on the order of statement A, B, C) for
    // LinkedBlockingQueue, corePoolSize = 1 and sequence of statements A, B and C other than [B, A, C]
    // LinkedBlockingQueue, corePoolSize = 2 and sequence of statements A, B and C other than
    // [A, B, C], [B, C, A] and [C, B, A]
    bootstrap.shutdown()
  }
}

我很确定executor服务配置必须满足一些特定的要求,但具体要求是什么(核心池大小、队列类型)?独自创立shutdown()将永远阻塞,除非语句A、B和C的执行顺序正好是[B、A、C]。对于三条语句的六个组合中的三个,将核心池大小增加到2个块。具有核心池大小

共有1个答案

王炜
2023-03-14

实际上,这似乎是一个错误。我认为,如果xou为boss和workerpool使用不同的执行器,那么它是有效的。你能打开一个错误报告吗?

 类似资料:
  • 根本原因出现在Jetty HttpClient连接管理或线程管理的底层。通常,Jetty HttpClient会生成一组线程来处理HTTP GET(见下文),这些线程会按照您的预期启动和消失。在大约40小时或操作之后,JDK VisualVM显示至少9个连接线程不会立即消失: HttpClient-计划程序x 1 HttpClient-选择器客户端SeclectorManager x 4 Http

  • 资源共享 资源共享目前面临的问题主要包括: 共享过程成本过高; 用户身份评分难 共享服务管理难 短租共享 大量提供短租服务的公司已经开始尝试用区块链来解决共享中的难题。 一份来着 高盛的报告 中宣称: Airbnb 等 P2P 住宿平台已经开始通过利用私人住所打造公开市场来变革住宿行业,但是这种服务的接受程度可能会因人们对人身安全以及财产损失的担忧而受到限制。而如果通过引入安全且无法篡改的数字化资

  • Summary Cross Origin Resource Sharing or CORS is a mechanism that enables a web browser to perform "cross-domain" requests using the XMLHttpRequest L2 API in a controlled manner. In the past, the XMLH

  • 我很难清楚地理解MySQL5.6使用/r/t memcache引入了什么。 按照我的理解,memcache本身本质上是一个巨大的、共享的、驻留内存的哈希表,由服务器memcached管理。特别是,它对持久数据存储一无所知,也不提供这方面的服务。它只知道键和值(像Perl散列)。 我认为MySQL5.6引入的是NoSQL API,mySQL客户端可以通过键而不是通过SELECT语句从mySQL服务器

  • 公司的文员是看似最为普通的文职岗位,但同时也是一个竞争力较大的岗位。以下是出国留学网小编整理的文员的求职面试技巧分享,欢迎参考,更多详细内容请点击出国留学网查看。 文员求职面试技巧 要做到面带微笑,平视考官,避免情绪波动,走向两个极端:一是自卑感很重,觉得坐在对面的那人博学多才、回答错了会被笑话。所以,畏首畏尾,不敢畅快地表达自己的观点;另一种情况则是,很自信,压根不把招聘人员放在眼里,觉得对方还

  • 问题内容: 我在本地局域网(machineA)上有一台具有两个Web服务器的计算机。第一个是XBMC中的内置端口(在端口8080上),并显示我们的库。第二台服务器是我用来根据需要触发文件转换的CherryPy python脚本(端口8081)。由XBMC服务器提供的页面上的AJAX POST请求触发文件转换。 转到显示库的http:// machineA:8080 显示图书馆 用户点击“转换”链接