多线程环境下static的使用是否有助于提高性能?

发布于 2021-11-04 19:08:17 字数 802 浏览 955 评论 5

例如用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

做个少女永远怀春 2021-11-08 11:15:18

这问题貌似跑题了,static方法是为了调用方便,就像你这个方法完全可以放到工具类里去。性能问题,如果你这个方法包含的对象包含大量的数据,那么static会大幅度提高速度,因为省去了创建对象和释放对象的过程,如果你这个类本身没有数据,那么基本上不会有任何性能的影响。

离去的眼神 2021-11-08 04:41:22

参考JVM运行时数据区,我自己的理解:每个线程都有一个栈和它自己的程序计数器,而方法只是一段计算机指令而已,储存在方法区,多线程调用的方法在内存中就一块,多线程执行某一方法时,线程的栈存放方法使用数据(这也看出,同步其实是同步数据),程序计数器包含当前被执行的JVM地址,相当于不同的数据执行同一段指令。java这种静态编译语言运行时是把数据和执行逻辑分开的。总而言之:static无非就是JVM可以直接映射到方法区,对性能的提升可以忽略。

滥情空心 2021-11-07 20:32:05

可以省去new的开销啊!

流心雨 2021-11-07 20:11:04

静态的类会预先new出来了。具体的我不知道怎么说,呵呵

夜司空 2021-11-07 07:07:02

不能。。。 得看具体情况

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文