Socket并非线程安全恐怕程序员皆知,但如果问题发生在别人的API中恐怕问题就不是那么好解决,今天我就遇到了类似的问题,用spring注入单例,单例为多线程共享并且在内部维护了用于通信的Socket,导致Socket出现线程安全问题,项目并非自己开发,里边调用的服务端API也有十几年的年头,只能沉下心来仔细读去读反编译过来的API代码,层层调用读起来相当不易,这里体会到了IntelliJ的好处,.class直接反编译,如果能搜索class文件中的代码调用就更好了,Spring单例注入用好了感觉很舒服,但一定要考虑是否会涉及到线程安全问题。
网友评论