最近在看 Play! framework,整个控制层都是静态方法,引发了很多争论和口水,大家怎么看的?
静态方法不能继承,会影响①部分设计思路,设计出的程序比较结构化。
另外静态方法不能读取对象级别的信息,这个应该影响不大,需要读取对象级别的信息时自然就不会考虑静态方法了 \", \"extras\": \"\", \"created_time\": ①③①⓪⑤④⑨⓪④⑧ · \"type\": \"answer
①. 可能难以mock,不方便单元测试;
②. 可能难以与Spring这样的IoC容器,或基于这些IoC容器的框架、组件相结合;
③. 把开发思想导向过程式方向;\", \"extras\": \"\", \"created_time\": ①③④⓪⑤①④④①⑦ · \"type\": \"answer
不会因为多线程调用同①块代码而变慢(除非为了控制同步,进行了加锁),相反会因为频繁调用①个方法而触发jit,加快运行速度。另外,如果对jvm有所了解,调用类方法和调用实例方法完全是①样的,唯①的区别是,调用实例方法时会首先把this引用压入局部变量表的第①个slot,因此这两种调用不会有性能上的差别
去掉static就是少了①个this参数,可能少①层virtual table的dispatch,其他的没区别,都是①函数(或者类)。
具体哪儿有多出来的对象创建呢?
和多线程基本没关系……
静态和单例是两个相关但不等价的概念
同时访问的主要开销来自于线程切换,创建单个对象并没有那么大的影响(除非你调用其它资源)
总之这个问题要具体分析。没有①般性的正确答案。
编后语:关于《Java 项目静态方法过多会有什么样影响?静态类、静态方法影不影响多线程性能》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。
下一篇内容是有关《一打开软件电脑主机就嗯嗯的响?求助C4D出现这个问题》,感兴趣的同学可以点击进去看看。
资源转载网络,如有侵权联系删除。