我们有查找打印机的应用程序。在env(Windows 7)中,它设置了几个本地打印机服务,例如XPS写入器,一个音符和几个来自网络的物理打印机。当负载很高时它会冻结,我们发现PrintServiceLookup.lookupPrintServices
是被卡住的线。
我们可以通过同时运行四个应用来重现这一点,PrintServiceLookup.lookupPrintServices
是这些应用的唯一行。主要问题是它不会抛出任何异常或没有超时(Windows事件日志在那段时间有一些超时日志)。
你们中的任何一个人都遇到过类型的问题吗?你有没有看到任何可能发生的原因。
public class Test
{
public static void main(String[] args)
{
long time = System.currentTimeMillis();
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
System.out.println("Time = "+(System.currentTimeMillis() - time));
}
}
如果你同时运行倍数,有时新的到达sysout(不那么容易重现)