[英]Applet not working on JRE 6u25
我有一个小程序连接到一个设备,并获得它的参数throgh SNMP协议。 它在JRE 6u20上工作正常,但在将JRE更新到6u25后效果不佳。
在6月20日检索设备参数需要几秒钟,但是在6u25它需要更多,最后大多数参数都没有被检索。
有一个SwingWorker用于读取每个参数,我使用这个Java SNMP包 。
这些版本的JRE之间的差异是什么? 如何找出导致问题的原因?
最后我想出了问题所在。 Java SNMP包 GetRequest不是线程安全的。 在JRE 6u20上没有问题,因为JRE 6u20中的SwingWorker默认线程池只有一个工作线程,但在JRE 6u25中,工作线程数为10
SwingWorker.MAX_WORKER_THREADS = 10;
通过在SNMP get request方法中添加“ synchronized ”关键字,问题就解决了。
synchronized public SNMPVarBindList getMIBEntry(String itemID)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.