Java XmlPullParser同步:线程正忙于等待
我有一个创建新XmlPullParser的函数。我的分析器显示线程在这一点上被卡住,这是一种潜在的死锁情况Java XmlPullParser同步:线程正忙于等待,java,android,multithreading,xml-parsing,xmlpullparser,Java,Android,Multithreading,Xml Parsing,Xmlpullparser,我有一个创建新XmlPullParser的函数。我的分析器显示线程在这一点上被卡住,这是一种潜在的死锁情况 private static XmlPullParserFactory xmlPullParserFactory; public static synchronized XmlPullParser newPullParser(InputStreamReader ip) throws Exception { if (xmlPullParserFactory == null) {
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是线程安全的,是吗?您可以简单地删除工厂的延迟创建,这是不必要的,因为工厂正在大量使用,然后还可以删除synchronized语句:
private static XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();
public static XmlPullParser newPullParser(InputStreamReader ip) throws Exception {
final XmlPullParser parser = xmlPullParserFactory.newPullParser();
parser.setInput(ip);
return parser;
}