Java中的线程

目前,我正在运行一个无线程模型,该模型无法正常工作,因为我在处理交付的数据之前内存不足。 我已经做了所有可以优化代码的更改,但仍然不够快。

显然我应该转向线程模型。 我想知道做到以下几点的最简单,最简单的方法是:

  • 主线程将一些信息传递给工作人员
  • 该工作人员执行一些我将重构主要方法的工作
  • 工作人员将消失,并在需要时实例化新工作人员
  • 我从来没有使用过Java线程,从我读过的东西看起来相当复杂,即使我正在寻找的东西看起来很简单。


    如果您有多个独立的同等优先级的工作单元,最好的解决方案通常是某种工作队列,其中有限数量的线程(选择用于优化性能的数量)位于一段while(true)循环中,使工作单元从排队并执行它们。

    一般来说,线程的最佳数量将是处理器数量的+/- 1,但在某些情况下,如果线程倾向于受到磁盘I / O请求或某些情况的阻碍,则较大的数字将是最优的。

    但请记住,可能需要调整整个系统。 例如,您可能需要更多的磁盘臂,并且可能需要更多的RAM。


    我首先通过阅读Java Concurrency作为复习;)

    特别是,我会花一些时间了解Executors API,因为它将完成大部分描述,而且没有很多处理许多锁的开销;)


    将内存消耗分配给多个线程不会改变整体内存消耗。 从我读到的问题中,我想向前走,告诉你:增加Java引擎的堆,这将有所帮助。 看起来你必须优化Java启动参数,而不是你的代码。 如果我错了,那么你将不得不缓冲数据。 到磁盘! 不是在相同内存模型中的线程。

    链接地址: http://www.djcxy.com/p/92043.html

    上一篇: Threading in Java

    下一篇: Dynamic Thread Pool