由于项目原因,使用HTTPS通信,里面会用到代码指定证书环境,以下代码就是指定方法,可能会多个线程运行,XX和YY多个线程值不一样,请高手告知是否会有线程安全问题。
System.setProperty("javax.net.ssl.keyStore",XX); System.setProperty("javax.net.ssl.keyStorePassword",YY); :oops:
1、
System.setProperty("javax.net.ssl.keyStore",XX); System.setProperty("javax.net.ssl.keyStorePassword",YY);
这是全局设置 可以考虑在程序启动后设置一次就行
难道每次都是不同的证书?
会的。
多个线程同时set,get的时候就会乱掉。
可能的话,上ThreadLocal好些。
这个问题我也遇到过,是用Authenticator.setDefault()方法的时候,不知道是不是线程安全的,所以没敢用。
Authenticator.setDefault()跟System.setProperty()应该差不多,文档没说线程安全,而且看源码有不少synchronized,却没有ThreadLocal,所以猜测应该不是线程安全的。
如果猜测错误,恳请高手解惑!
如果不是线程安全的,这俩玩意儿如何在多线程环境中使用呢?
如果不能解决此问题,这俩玩意儿岂不是鸡肋。。。
System.setProperty()是jre系统的全局变量,设置了会影响所有的调用,不能这么干,你可以用一个ThreadLocal把这些参数存起来,有一个老帖子关于它的争论,希望能够帮助到你:[url]http://www.iteye.com/problems/20549[/url]
线程安全的。。
底层是通过hashtble来实现的