首页 / JAVA / 带线程的Java优化
带线程的Java优化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了带线程的Java优化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1089字,纯文字阅读大概需要2分钟。
内容图文
我在Java中使用自定义类Foo作为HashMap中的键类型. Foo实例的所有字段都是不可变的(它们被声明为final和private,并且仅在构造函数中赋值).因此,给定Foo对象的hashCode()也是固定的,出于优化目的,我在构造函数中计算它并简单地在hashCode()方法中返回该值.
Foo的实例也有一个value()方法,一旦对象被实例化,它就返回一个类似的固定值.目前我也在构造函数中计算并在方法中返回它,但hashCode()和value()之间存在差异:hashCode()在创建对象后几乎立即第一次被调用,但是值( )之后被称为.我知道有一个单独的线程来计算哈希码会因为同步问题而增加运行时间,但是:
>这是计算价值()的好方法吗?它会改善运行时间吗?
>是简单的线程,还是我需要使用池等?
注意:这可能看起来我正在优化我的程序的错误部分,但我已经在’正确’的部分工作,并将平均运行时间从约17秒降低到约2秒.编辑:将有超过5000个Foo对象,这是一个保守的估计.
解决方法:
这听起来像延迟计算在这里是一个很好的方法 – 是的,如果你创建了很多这些对象,一个线程池是要走的路.
至于value()的返回值,直到它准备好,我会远离返回无效值,而是要么阻塞(并添加一些isValueReady()帮助器)或使其立即返回“future” – 一些对象提供相同的isReady和阻塞get方法.
此外,永远不要依赖“很久以后” – 在使用之前始终确保准备好的值.
内容总结
以上是互联网集市为您收集整理的带线程的Java优化全部内容,希望文章能够帮你解决带线程的Java优化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。