多线程环境下static的使用是否有助于提高性能?
例如用HttpClient来进行post请求:
public static String execute(String input){
StringEntity str = new StringEntity( input ,"UTF-8");
HttpPost post = new HttpPost("URL");
post.setHeader("action", "exe");
post.setEntity(str);
HttpResponse rsp = HttpClientSupport.execute(post);
HttpEntity entity = rsp.getEntity();
String output = new String(EntityUtils.toByteArray(entity),"UTF-8");
EntityUtils.consume(entity);
return output;
}
多线程下对静态execute方法的调用,是否能提高性能呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这问题貌似跑题了,static方法是为了调用方便,就像你这个方法完全可以放到工具类里去。性能问题,如果你这个方法包含的对象包含大量的数据,那么static会大幅度提高速度,因为省去了创建对象和释放对象的过程,如果你这个类本身没有数据,那么基本上不会有任何性能的影响。
参考JVM运行时数据区,我自己的理解:每个线程都有一个栈和它自己的程序计数器,而方法只是一段计算机指令而已,储存在方法区,多线程调用的方法在内存中就一块,多线程执行某一方法时,线程的栈存放方法使用数据(这也看出,同步其实是同步数据),程序计数器包含当前被执行的JVM地址,相当于不同的数据执行同一段指令。java这种静态编译语言运行时是把数据和执行逻辑分开的。总而言之:static无非就是JVM可以直接映射到方法区,对性能的提升可以忽略。
可以省去new的开销啊!
静态的类会预先new出来了。具体的我不知道怎么说,呵呵
不能。。。 得看具体情况