1
4
你有没有研究过用jai把你的“子图像”作为块来管理?如果您不必挂起原始图像BufferedImage实例及其所有子图像BufferedImage实例,那么似乎可以更好地使用资源。有关JAI的信息可在此处找到: JAI README 有一个类,tiledimage,它实现了renderedimage接口(给它一个与bufferedimage相同的祖先)。根据JAI文件:
使用renderedImage的其中一个实现通常比bufferedImage更受欢迎,因为bufferedImage在内存中为整个图像维护一个图像快照。JAI使用一个渲染链,可以根据需要回收瓷砖以适应内存限制。 |
2
2
这是一个很好的分析,对我来说是正确的。没有共享数据,所以并发访问应该可以。然而,你需要某种保证来确定,而不仅仅是一个有教育意义的猜测,它应该起作用。即使您发现一条语句说“bufferedimage设计为并发使用”——也不能保证这是实际情况。 为了尽可能确定,可以使用 ConTest . 并发测试工具会检测代码并注入人工诱导的上下文切换,以暴露并发错误。这将测试bufferedImage代码和您自己的代码,因此您可以高度自信它是线程安全的。 |
3
1
我没有发现任何明显的证据表明
不要让不同的工作人员同时处理子图像,而是尝试以每个工作人员使用同一图像的不同子图像的方式处理多个图像。同一个工人将处理同一图像的子图像,但顺序相同。 你的工人会很忙,直到没有比工人们留下的更少的图像。 还原此问题: W1 W2 W3 Img1 |-------|-------|-------| W1 W2 W3 Img2 |-------|-------|-------|到: W1 W1 W1 Img1 |-------|-------|-------| W2 W2 W2 Img2 |-------|-------|-------| |
4
0
如果这些答案都不满足(足够),你可以做一些事情来最终解决这个问题。价格。 Examine the source for BufferedImage, DataBuffer, Raster, etc. 这是唯一的办法。 |
Eric · fgets_unlocked()用于多线程读取不同文件 2 年前 |
RoyGNEU · 堆上的专用std::Vector是线程安全的吗? 2 年前 |
JaiK · 在c中使用线程或队列写入文件# 6 年前 |
Catalin Ghita · 如何以安全线程对象为值初始化哈希表? 6 年前 |
Juan JuezSarmiento · C++删除对象,是否锁定? 6 年前 |
Missa · 两个不同线程正在处理原子NSMutableArray 6 年前 |
user5682282 · 从其他线程读取值 6 年前 |