面试过Java研发岗位的同学,相信很多都碰到过面试官问这么一道题:Java并发包有些什么?
Java并发包,就是java.util.concurrent包下的类和子包。
大体分为三类:
一: 线程池工具
核心类为ThreadPoolExecutor,通过这个类,可以构建出各种线程池。
二: 原子工具
如AtomicInteger、AtomicLong等,通过CAS保证操作的原子性。在实际应用中有很大的作用。
三: 锁
java Lock锁,有着实现了各种语义的锁。核心类有:
AbstractQueuedSynchronizer、ReentrantLock、ReentrantReadWriteLock等。
四: 线程安全的容器
ConcurrentHashMap 线程安全,锁粒度控制的好。
其他核心类还有 ConcurrentSkipListMap、CopyOnWriteArrayList
五: 并发队列
核心类有:
LinkedBlockingQueue、LinkedBlockingDeque。
六: 同步功能
CountDownLatch 一个线程A等待其他几个线程执行完后,线程A继续执行。
CyclicBarrier(num, 动作A) 多个线程等待CyclicBarrier.await()每执行num次后,先是动作A会执行,接着多个等待的线程再继续执行。
Semaphore(num) 相当于一个计数器,Semaphore.acquire 申请名额,阻塞函数,Semaphore.release 会释放名额,Semaphore
保证最多有num个任务在执行。
标签:Java,面试,num,发包,Semaphore,线程,高频 From: https://www.cnblogs.com/kingcode/p/17961804