1、静态的内存空间是固定的,相对来说更省资源。而创建实例的创一个实例就要开辟一个新内存,耗费资源;
2、静态方法属于类所有,类实例化前即可使用;
3、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员;
4、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存;
5、static方法内部只能出现static变量和其他static方法!而且static方法中还不能使用this等关键字,因为它是属于整个类;
6、静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁;
7、静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
8、静态方法可以通过 类名.方法名直接调用。普通方法需要创建一个实例,然后通过对象名.方法名的方式来调用
如果在类A定义了静态变量B,静态方法C,静态方法C可以访问B,如果只是读操作,不会有并发访问的问题,如果是有写操作,则会有并发访问的问题,需要进行同步处理,或者使用ThreadLocal。
所以,如果在HttpclientUtil类中定义的CloseableHttpClient静态变量和doGet静态方法,因为CloseableHttpClient类内部没有变量只有方法,所以不会出现并发访问的问题。
https://blog.csdn.net/ciyiwa8779/article/details/100291067
由于CloseableHttpClient是线程安全的,因此不需要每次调用时都重新生成一个,可以定义成static字段在多线程间复用。