我不知道何时应该在Java开发中使用多线程,以及使用它的逻辑/原因。在不同情况下如何提供帮助?
我正在制作带有敌人和所有元素的2D滚动游戏,想想金属弹头
我正在制作一个数据库守护程序来检查多个数据库内容。
我正在为JSP创建servlet,并从数据库中获取了一些信息。
随时编辑方案以使其更好。
另外:我应该为游戏服务器使用多线程吗?还是我不应该?
您应出于多种原因将程序更改为使用线程。
但是,可能很难确定您的程序是否将正确地使用多个处理器,以便对程序进行重新加工是一项不错的投资。只有在涉及大量处理/计算的情况下,您才能提高速度。例如,如果您的程序正在等待IO(磁盘或网络读或写),那么您可能会花费大量工作将一个程序拆分为多个线程,而看不到速度的提高。
另外:对于J2EE的问题,我应该何时在servlet中使用多线程?还是我不应该?
我认为上述相同的答案也适用。通常,servlet是非常小的任务,旨在快速返回,因此它们分叉线程是相对不常见的。但是,如果Servlet需要启动一个长期运行的任务,但您希望它返回“启动作业”类型的响应,则将需要一个线程。
重要的是要注意,到执行servlet时,上游处理程序可能已经在使用线程池,因此您无需执行任何操作。
编辑:
场景1-我正在制作带有敌人和所有元素的2D滚动游戏,想想金属弹头
我对此没有很好的答案。取决于是否正在进行大量渲染,还取决于您使用的是什么工具包。
方案2-我正在制作一个数据库守护程序来检查多个数据库内容。
您可能会受到数据库IO的约束,因此多个线程可能不会给您任何东西。再说一次,如果您有长时间运行的查询,那么如果短查询可以在其他线程上并行执行,则可能会有所改善。这还取决于数据库如何处理多个连接。
场景3-我正在为JSP创建servlet,并从数据库中获取了一些信息。
如果响应必须等待信息获取,则没有理由在另一个线程中执行此操作。但是,如上所述,如果servlet试图派生在后台运行的某种数据库事务,则应该使用线程。
同样,大多数servlet容器已经在线程池中运行。