打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Jackson第三篇【ObjectMapper的并发编程】
前两篇文章咱们一起学习了一下,Jackson的基本使用方法还记得第一篇文章我获得一个ObjectMapper对象整得那么麻烦 。还用用单例模式来获取为什么不直接new?先看一个数据吧。

   我把咱们第二篇文章里面的TestVo转换成JsonCommonUtil.getMapperInstance(false);方式执行5次  平均耗时为210毫秒,把false改成true以后9991.6毫秒

   这里我不是想测试它的性能(后面我会写一篇专门测试几种JSON类库性能的文章届时应该会涉及到json-lib ,jackson,Gson……等常用类库 ),我的机器也不给力。我主要是想说明的是每次new ObjectMapper() 和 全局使用一个 性能上相差了 大概47 倍。在这个时间就是金钱的世界47倍是什么概念,一个系统得转换多少次啊!

  那大家可能说了你直接全局唯一是的,何必浪费时间来写一篇文章呢。别急,我来给大家解释一下!毕竟它是全局的那么在多线程情况下,并发情况下 它会是什么情况呢?会不会弄乱我们的数据?数据是万万不能乱的,你有1000W存款银行系统乱了一下 给你少个0  你会哭的很有节奏!

接下来看下jackson官方文当对ObjectMaper的解释:Jackson's org.codehaus.jackson.map.ObjectMapper "just works" for mapping JSON data into plain old Java objects ("POJOs").引自:http://wiki.fasterxml.co/JacksonInFiveMinutes

 

Java代码
  1. ObjectMapper mapper = new ObjectMapper();//can reuse,share globally  

 卖弄一下我可怜的英语: ObjectMapper 只用作把Json映射到PoJo  ,可用在全局重用。

 既然人家说了只是把Json映射到PoJo 可以全局使用,那咱们还有必要研究吗?我感觉有必要!因为我现在不知道他是否是线程安全的,毕竟数据第一。那么接下来咱们就一起测试一下极端情况下他是否是线程安全的。

 我的测试思路是这样的:可以使用多个线程 线程1Mapper已经映射某一个实体的时候让线程一sleep 然后线程二执行。看看线程2转换的结果是否正确,虽然有点不准确但是也能大概看出来是否是线程安全的。因为代码太多目前正在整理,等整理完毕我贴上代码。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
从jackson的使用和源码看程序设计
java中Jackson库的ObjectMapper类
两款JSON类库Jackson与JSON
Json解析工具Jackson(简单应用)
不要直接new ObjectMapper!性能太拉垮,差10倍!!
Spring mvc3 jackson输出null为空字符串、单引号、字段和数字加引号问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服