有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

多线程Java BuffereImage。createGraphics线程安全?

我正在运行一个web服务器,它可以检索图像并对其进行一些操作。单元测试中一切正常,但今天web服务器没有响应,在执行线程转储时,我看到许多被阻止的线程具有以下堆栈跟踪:

sun.java2d.SunGraphicsEnvironment.createGraphics(java.awt.image.BufferedImage) @bci=19, li

ne=181 (Compiled frame)
 - sun.java2d.HeadlessGraphicsEnvironment.createGraphics(java.awt.image.BufferedImage) @bci=5, line=89 (Compiled frame)
 - java.awt.image.BufferedImage.createGraphics() @bci=6, line=1154 (Compiled frame)
 - (my package).getScaledInstance(java.awt.image.BufferedImage, int, int, java.lang.Object, boolean) @bci=113, line=120 (Compiled frame)

它被卡住的代码行是:

        BufferedImage tmp = new BufferedImage(w, h, type);
        Graphics2D g2 = tmp.createGraphics();

createGraphics线程安全吗?我在官方的javadocs中找不到任何说明它不是的文档,但它看起来确实是这样的(考虑到它是基于AWT的,如果不是的话,也就不足为奇了)。还有什么东西会导致线程像这样阻塞吗

编辑:应该补充一点,我运行的是Amazon EC2 Linux ami(默认版本),运行的是最新版本的java

java -version
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

共 (0) 个答案