专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java juc包学习笔记(java的juc包)

temp10 2024-10-20 14:42:27 java教程 13 ℃ 0 评论

前几天正好闲了下,看了java的JUC包,温故而知新,一下子看到了很多以前不知道的。我觉得最大的发现就是sun的Unsafe类,竟然光明正大地用指针赋值了。好处据说是可以冲破读写屏障,实现多线程的控制,所以性能也就更好了。老生常谈的CAS自不必说了,因为CPU支持了粒子性的compare and swap,所以性能也更高。

另外就是除了wait,notify只是随机唤醒其中一个,notifyAll是唤醒所有,可以被唤醒后判断自己是不是应该被唤醒,所以wait需要在循环中,不应该被唤醒接着wait。

Java juc包学习笔记(java的juc包)

然后就是lockSupport,比wait notify好用多了,park的时候,外面unpark才能唤醒,而且park可以在unpark后执行,不影响unpark的阻塞。在reenterLock中的newCondition的await中,用的就是locksupport,唤醒就是signal方法。

除了CountDownLunch还有CyclicBarrier,Semaphore,CyclicBarrier是多个线程内分阶段的,并且可以使用多次等待,比如等大家一起吃完饭,可以用一次,然后开始喝汤,喝完汤还可以用一次,一起收拾东西。Semaphore就是信号量了,用于限流,颁发多少个固定令牌,用完了还一个回去。

另外就是跳表了,就是用多层的,类似于二叉树的,根据上层的类似目录一样的确定范围。线程安全因为只会变动一部分数据,同时保证了查找的效率。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表