繁体   English   中英

XmlPullParser同步:线程正在等待

[英]XmlPullParser synchronization : threads are busy waiting

我有一个用于创建新XmlPullParser的函数。 我的探查器显示线程被卡在此处,这是潜在的死锁情况。

private static XmlPullParserFactory xmlPullParserFactory;

public static synchronized XmlPullParser newPullParser(InputStreamReader ip) throws Exception {
    if (xmlPullParserFactory == null) {
        xmlPullParserFactory = XmlPullParserFactory.newInstance();
    }

    final XmlPullParser parser = xmlPullParserFactory.newPullParser();
    parser.setInput(ip);
    return parser;
}

}

我无法弄清楚代码出了什么问题。

您的代码没有错,但是由于方法是同步的,因此似乎成为了瓶颈。

假设XmlPullParserFactory.newInstance()是线程安全的(是吗?),您可以简单地删除工厂的惰性创建(因为工厂使用量很大,所以没有必要),然后还删除了同步语句:

private static XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();

public static XmlPullParser newPullParser(InputStreamReader ip) throws Exception {
    final XmlPullParser parser = xmlPullParserFactory.newPullParser();
    parser.setInput(ip);
    return parser;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM