【发布时间】:2011-04-24 18:14:12
【问题描述】:
我正在尝试提高在 Linux 上运行的网络应用程序中验证码图像渲染的性能。查看目前使用的,发现瓶颈在于Java2D的使用,特别是Graphics2D类。
问题不在于执行速度,而在于可扩展性。基本上它不会缩放。在 1 个线程或 2 个线程中绘制验证码图像在执行时间方面没有任何改进。
例如,您可以查看以下为验证码图像创建背景的类。问题出现在对 Graphics2D::setColor() 和 Graphics2D::drawLine() 的调用中:
经过一番谷歌搜索,我发现一个主题说 Java2d 在多线程方面不是特别好(抱歉,不允许提供多个链接:) 但是,如果谷歌搜索“java2d 多线程”,您可以轻松找到该主题,这将是第一个结果)
我相信一定有一些库提供绘图功能而不使用 Java2d,但找不到它:( 或者 Java2d,可能,可以切换到某种模式,它不会阻止访问图形对象(顺便说一句,无头模式无济于事)。
我将不胜感激任何建议。预先感谢您的回答。
【问题讨论】:
-
FWIW 谷歌搜索时我得到的第一个打击是关于从多个线程写入相同的 graphics2D 对象。不是每个人都有自己的情况。
-
forums.sun.com/thread.jspa?threadID=5415900 这是引文 - “经过一番谷歌搜索,我发现这篇四年前的文章谈论 java 的 OGL 管道只允许在单线程上渲染(从 java 1.6 开始)。”
标签: java performance graphics scalability