首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:多线程和2D线程

Java:多线程和2D线程
EN

Stack Overflow用户
提问于 2016-04-11 21:26:09
回答 2查看 89关注 0票数 1

我正在制作一种射线追踪器,它可以工作,但还没有照明。对于那些不知道的人,射线追踪器的工作方式是通过屏幕的每个像素从摄像机(观看者)发出光线,测试物体在3D空间中的碰撞,如果光线击中物体,则给像素着色。

你必须运行每个像素的计算,这是很多的计算。所以我对每一列像素都有一个线程。目前,我正在实现Runnable。这提高了程序的速度,并且对外部进程的总体处理速度没有明显的影响(这是很好的)。

对于照明,我将采取在三维空间的一点,相机的光线与物体相交,并确保这一点应该被点燃(计算所有的光源,它有足够的潜力,足以保证多线程)。

我可以想象,让线程创建更多的线程(2D线程)是一种糟糕的实践,但是是否有一些库或方法来实现这一点,从而提高效率呢?我知道这不会导致无限递归,但我也不想让我的CPU超载。本质上,我如何处理一个需要"2D线程“安全的过程?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-11 21:31:34

您只需使用ExecutorService来管理线程。也许可以尝试使用Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())

Runnable实现可以创建更多的Runnable实例并将它们提交给同一个ExecutorService。如果您确信它不会创建无限递归,那么它应该运行到完成,并且不会使用比硬件可用的线程更多的线程。唯一需要注意的是,您没有创建那么多Runnable实例,以致于内存不足。您还需要跟踪所有Runnable实例何时完成,但是服务提供了这样做的机制(参见Java中的Future )。

票数 2
EN

Stack Overflow用户

发布于 2016-04-12 17:32:47

如果你在每一个线程做一列,你就失去了平铺射线一致性的优势之一。虽然,老实说,我从来没有发现它特别有优势,但话说回来,我不使用阿诺德或精神射线.我试着从一条射线开始,把你的质量提高到尽可能高的水平,然后把你的图像中的正方形移到不同的线上.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36559529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档