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