首页 / JAVA / 最佳的java线程安全对象池
最佳的java线程安全对象池
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了最佳的java线程安全对象池,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1230字,纯文字阅读大概需要2分钟。
内容图文
![最佳的java线程安全对象池](/upload/InfoBanner/zyjiaocheng/769/8a5763d8b1724367a4c4a3aca449e5da.jpg)
我并不熟悉Java的并发库,因此对于以下问题,我通常只编写自己的互斥锁管理代码,但我担心随着servlet流量的增加,互斥体会降低系统速度.
第一个需要是使用一组有限的String键,我需要先查找,否则创建并发布一个昂贵的对象.这意味着在一个天真的实现上有一个全局互斥.还有更好的东西吗?
第二个需要是每个昂贵的对象都有一个等效工人的软池,其中任何一个都足以执行.这些工人的创建成本比工厂的工厂便宜,但它们仍然很昂贵,需要汇集.一个简单的实现将为每个工厂安装一个互斥锁,并从软缓存中检出一个工作人员,或者如果没有可用的话就创建它.但是由于很多servlet调用使用相同的工厂(可能),这个互斥锁也会成为一个争论的焦点.
当然,对于2个互斥体,我绝对可以最大限度地减少在同步语句中花费的时间,但我在两种情况下都在寻找更好的东西.也许两者都有一个非阻塞的解决方案?
安迪
解决方法:
对于第一部分:而不是将昂贵的对象直接放入HashMap,而是创建一个创建起来便宜的简单包装器.然后,您基本上在包装器getExpensiveObject()方法中按需创建昂贵的对象 – 尽管如果这是首选的话,显然可以立即触发创建.在任何一种情况下,你都必须同步get方法,但是这可以通过双重检查锁定来廉价地完成 – 通常我们只是用volatile读取替换普通读取并且仅在创建对象时具有昂贵的同步.
这假设您正在使用各种类型的ConcurrentHashMap,因为我们需要putIfAbsent或一些等效方法才能工作(我们不想用空包装器替换现有的昂贵对象)
现在没时间考虑第二个问题,也许以后.
内容总结
以上是互联网集市为您收集整理的最佳的java线程安全对象池全部内容,希望文章能够帮你解决最佳的java线程安全对象池所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。