Java并发包(JUC多线程)下⾯的⼯具类,在实际⼯作中都有
哪些应⽤场景呢?
下⾯可以主要分⼏类:
1. 线程间通信⼯具类,如Semaphore ,、CountDownLatch、Future等等,这种也经常⽤,特别是在写多线程⾼并发的程序时,结合通信⼯具和锁把线程编排的符合你的预期执⾏
2. 锁,JUC提供了各种在某些场景下⽐synchronized更合适的⾼级锁实现,包括读写锁,互斥锁等等,因其多数基于CAS这种乐观锁实现,性能⼀般要由于synchronized内置锁,⽽且结合Cdondition更灵活可控。 不过个⼈觉得,这些锁除了jdk以及⼀些知名框架中使⽤外,我们⽇常⼯作synchronized就已经够⽤了,很少会⽤到,就算为了追求极致的性能,也往往先从架构⽅⾯⼊⼿
3. 原⼦包装类 ,这个经常⽤,⼀两⾏代码既可以保证线程安全,⼜可以获得⽐synchronized内置锁更好的性能,何乐⽽不为呢
4. 线程安全的集合, 这⾥⾯包含了⼀些基于锁分解、分段锁、CAS等机制性能优良且线程安全的集合类,⼀般在多线程业务中,只要有共享访问的集合,可能不管三七⼆⼗⼀直接⽤这些同步集合
5. 线程池⼯具类,这就更不⽤说了,⽬前⼏乎很少有项⽬不⽤线程池的
jdk怎么使用使⽤场景:
1.⽣产消费问题,这是⼤头,⼤到转账取钱问题,⼩到并发读写队列,只要有对共享数据的并发读写访问,都可以算
2.秒杀场景,红包、促销等等,其实这也勉强可以算⽣产消费问题
3.研发框架,⽬前各种web 服务 、rpc服务、schedule服务等等,都是多线程服务,JUC的⼯具是保证并发服务⾼可⽤⾼性能的基础
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论