java支持多线程吗_JAVA是我用过的语言中对多线程支持最好的

JAVA

6是06年底发布的。2006年啊!!那时候我还没大学毕业呢,小毛孩一个!JAVA是个跨平台的东西,它能屏蔽底层硬件差异而提供一个统一的内存模型,这点十分了不起!换句话说,想用JAVA写出高性能的程序,并不必怎么了解CPU架构,而且,06年的时候,Intel还没有Nehalem呢!!!我最近一直在看那本《The

Art of Multiprocessor

Programming》,今天终于看到SkipList了。然后我在想,如果用SkipList实现一个Map,然后用它来管理cache,该多好啊?结果,结果,发现JAVA

6在发布的时候已经实现了这个了

,ConcurrentSkipListMap,那时5年前了啊!关键是,人家的标准库,真的是该有的都有了,而不是像pthreads那样,除了mutex/condition

variable之外一无所有。不过JDK中满足non-blocking性质的数据结构没几个,我知道就ConcurrentLinkedQueue、ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet这么四个。目前我所看过的所有paper也都集中在链表、hash

map以及skip

list上。我本想用ConcurrentSkipListMap来管理cache,但是ConcurrentSkipListMap有个缺点,它的size方法是O(n)的。这个给做lru带来了麻烦。于是,我不能每次insert的时候都检查一下是否达到capacity上限了。

如果你自认为精通“JAVA”或“数据结构”或“多线程编程”中的任何一个,那么去看看ConcurrentSkipListMap的代码吧,一定会被惊倒的!我觉得我有生之年写不出这么优秀的东西……

嗯,但是我读懂了一个关键点:为数据结构设计并发算法的时候,核心在于找到那个不变的东西!无论数据怎么插怎么删,总有一个性质,始终保持不变!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值