高并发时应该用静态方法还是动态方法?

狼王_ 2014-01-12 06:27:11
对于高并发的调用一个方法时,是把这个方法定义成静态好还是动态的好呢? 定义成静态的时候我用lock把这个方法锁住,这样只有一个调用完成了才会进行下一次调用,就不会出现死锁,动态方法每次调用都实例化一个对象,高并发的情况下会不会性能低下呢?
大家帮忙看看啊
...全文
603 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hannguangg 2015-02-17
  • 打赏
  • 举报
回复
引用 4 楼 wddw1986 的回复:
是不是static方法一般来说跟效率是无关的,而且取决于业务设计,业务需要是static方法就是static方法。
点错了 手误了 请勿略!!!
hannguangg 2015-02-17
  • 打赏
  • 举报
回复
引用 5 楼 wanghui0380 的回复:
其实这是博客园那拨人的错误传教方式带来的问题 本身对于静态方法而言根本就不存在什么所谓的并发问题 理由很简单 1.对于方法,编译器是一视同仁滴,哪怕你是非静态方法,其编译后的代码,其实就是静态滴,代码就只有一份,不会因为你不是静态方法他就多出n份的道理 2.对于博客园那些不明就里的传教者来说,所谓的静态并发问题,其实多数发生在共享的资源上面,这些资源包括静态属性,文件占用,端口分配,数据库连接这些东西上,而非静态方法本身有问题 所以就其本身只是因为错误的使用导致的并发问题,而非博客园教条式的号称凡是静态都有并发问题。而解决这种并发问题其实也很简单 1.尽量不依赖外部提供,尽量遵守基础设计原则--迪米特法则 2.如果有必要使用共享外部资源请lock他
对博客园充满了深深的恶意呀!!!
hannguangg 2015-02-17
  • 打赏
  • 举报
回复
引用 4 楼 wddw1986 的回复:
是不是static方法一般来说跟效率是无关的,而且取决于业务设计,业务需要是static方法就是static方法。
对博客园充满了深深的恶意呀!!!
zcw1967 2014-01-12
  • 打赏
  • 举报
回复
不明觉厉,高深莫测
wanghui0380 2014-01-12
  • 打赏
  • 举报
回复
其实这是博客园那拨人的错误传教方式带来的问题 本身对于静态方法而言根本就不存在什么所谓的并发问题 理由很简单 1.对于方法,编译器是一视同仁滴,哪怕你是非静态方法,其编译后的代码,其实就是静态滴,代码就只有一份,不会因为你不是静态方法他就多出n份的道理 2.对于博客园那些不明就里的传教者来说,所谓的静态并发问题,其实多数发生在共享的资源上面,这些资源包括静态属性,文件占用,端口分配,数据库连接这些东西上,而非静态方法本身有问题 所以就其本身只是因为错误的使用导致的并发问题,而非博客园教条式的号称凡是静态都有并发问题。而解决这种并发问题其实也很简单 1.尽量不依赖外部提供,尽量遵守基础设计原则--迪米特法则 2.如果有必要使用共享外部资源请lock他
cheng2005 2014-01-12
  • 打赏
  • 举报
回复
是不是static方法一般来说跟效率是无关的,而且取决于业务设计,业务需要是static方法就是static方法。
threenewbee 2014-01-12
  • 打赏
  • 举报
回复
任何情况下,“锁住”就不是“并发”了。
  • 打赏
  • 举报
回复
通常我们设计为 public static的方法,是因为省事。跟性能无关。 如果你设计思路是面向对象的,你就可以new一个对象然后才调用其方法。如果没有必要面向对象,那么就可以设计为static方法。 比如说BLL方法,如果你的“引擎”系统需要先自动创建一个BLL实例对象,或者就好像asp.net一样先为每一个消息创建一个独立的Handler以提供用户定义执行方法的许多上下文环境数据,那么你就可以设计为所谓“动态”的就行了。 而如果你现在没有需求去考虑支持“装载不同的BLL对象实例”,并且你也考虑不到什么“上下文环境数据”之类的东西,你也可以从一开始就设计为static方法,引擎系统调用static的方法。 这里考虑的是设计。之所以考虑这些,是因为什么“性能”之类的显得并没有什么差别。真正的软件开发和运行的性能表现,需要整体测试最终效果,不是你死抠一两条代码能够发现的。
  • 打赏
  • 举报
回复
你自己测试一下能够慢多少?

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧