什么时候/为什么我应该在Java中使用多线程?
我不知道什么时候应该在Java开发中使用多线程,以及使用它的逻辑/原因。它在不同的场景中有什么帮助 情景1 我正在制作一个有敌人的2D滚动游戏,还有一个所有的,想想金属弹头吧 情景2 我正在创建一个数据库守护进程来检查多个数据库内容 情景3 我正在为JSP制作一个servlet,其中包含一些从数据库获取的信息 请随意编辑场景以使其更好什么时候/为什么我应该在Java中使用多线程?,java,multithreading,jsp,jakarta-ee,Java,Multithreading,Jsp,Jakarta Ee,我不知道什么时候应该在Java开发中使用多线程,以及使用它的逻辑/原因。它在不同的场景中有什么帮助 情景1 我正在制作一个有敌人的2D滚动游戏,还有一个所有的,想想金属弹头吧 情景2 我正在创建一个数据库守护进程来检查多个数据库内容 情景3 我正在为JSP制作一个servlet,其中包含一些从数据库获取的信息 请随意编辑场景以使其更好 另外:我应该为游戏服务器使用多线程吗?或者我不应该这样做?当您认为某些东西可以并行化或异步化时,请使用多线程 并行化例如:在构建Web爬虫时,您可以使用并行线程浏
另外:我应该为游戏服务器使用多线程吗?或者我不应该这样做?当您认为某些东西可以并行化或异步化时,请使用多线程 并行化例如:在构建Web爬虫时,您可以使用并行线程浏览不同的页面等。这也可能意味着更好地利用资源(CPU、I/O等) 在某种意义上讲是异步的,在productconsumer的情况下,您有一个代码块在生成内容,其余的代码块在使用它 我不知道什么时候应该在Java开发中使用多线程,以及使用它的逻辑/原因。它在不同的场景中有什么帮助 出于两个不同的原因,您应该将程序更改为使用线程
- 当程序运行速度明显加快,并更好地利用您正在运行的多CPU/核心体系结构时。我使用“显著”一词是因为经常添加线程会增加很多复杂性,所以速度提高20%可能不值得 但是,很难确定您的程序是否会正确使用多个处理器,从而使程序的返工成为一项良好的投资。只有在涉及大量处理/计算的情况下,您才能获得速度提升。例如,如果您的程序正在等待IO(磁盘或网络读取或写入),那么您可能会花费大量工作将程序拆分为多个线程,但却看不到速度的提高
- 当程序的多个部分应该同时运行时。并不是说它不能在一个线程中运行,而是这样做会更加复杂。例如,一个web服务器有多个请求处理线程,因为让每个线程处理一个请求更容易,即使您可能不会在服务器上加载太多的负载,多个线程也会使它执行得更快
编辑: 场景1-我正在制作一个2D滚动游戏,游戏中有敌人和所有这些,想想金属弹头吧 我没有一个好的答案。这取决于是否有大量渲染正在进行,也取决于您使用的工具包 场景2-我正在创建一个数据库守护进程来检查多个数据库内容 您很可能会被数据库IO绑定,因此多个线程可能不会给您任何东西。同样,如果您有长时间运行的查询,那么如果短查询可以在其他线程上并行执行,您可能会得到一些改进。这还取决于数据库处理多个连接的方式 场景3——我正在为JSP制作一个servlet,其中包含一些从数据库获取的信息 如果响应必须等待获取信息,那么没有理由在另一个线程中这样做。但是,正如我前面提到的,如果servlet试图派生某种在后台运行的数据库事务,那么您应该使用线程 同样,大多数servlet容器已经在线程池中运行 我不知道什么时候应该在Java开发中使用多线程 -那你不应该。而且,如果你能避免,一定要这样做 当时:例如:如果您需要同时从多个站点/资源获取不同股票的市场份额值,以更新不同的经纪人系统,您可能需要这样做,因为单个线程必须先从一个站点获取,然后再尝试从下一个站点获取 基于您在问题中的编辑- 我正在做一个2D滚动游戏,里面有敌人和一个全是 想想金属弹头
是的,你可以。例如,在一个线程中加载资源,而在另一个线程中在屏幕上显示“加载…”动画。这并不是说你一旦学会了多线程,你就会随时随地使用它。需要时可以使用多线程 例如,您有一个很长的任务要做,并且您不想锁定UI,您可以在另一个线程上完成任务,而您的UI仍然工作良好。这将是一种情况
另一种方法是计算一些复杂的东西,这些东西可以在许多独立的步骤中完成,然后可以使用多线程并行完成。假设您有一个负责下载文件的应用程序,如果您不使用多线程,所有其他指令都将等待文件完成下载。例如,Swing使用一个特殊的线程来显示他的gui,所以你们应该看看教程,读一点太普通的问题…@Sebastian Well。。。。我搜索了一下,发现了这个,但我对答案不满意。所以我以我想要的方式被问到。如果这个太宽,那么这个q也是