首页 > 编程语言 >面试高频题:Java并发包有些什么?

面试高频题:Java并发包有些什么?

时间:2024-03-06 23:35:20浏览次数:372  
标签:Java 面试 num 发包 Semaphore 线程 高频

面试过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

相关文章

  • 【转】[Java]引入Redisson可能会出现项目启动失败问题解决
    转自:https://blog.csdn.net/bengbuguang4321/article/details/121951650在启动项目时,Redisson自己会启动一个Redisson连接池,尝试连接redis,这时候如果遇到网络不通就会出现问题,因为redis连接不上,导致项目启动不了解决方法是:1、重新空实现了一个RedissonClient/***@ClassNa......
  • JAVA API:ArrayList应用案例
    packagecom.itheima.ArrayList;importjava.util.ArrayList;publicclassDemo2{publicstaticvoidmain(String[]args){ArrayList<String>list=newArrayList<>();list.add("Java入门");list.add("宁夏枸杞&......
  • Java连接PostgreSQL数据库测试
    importjava.sql.DriverManager;importjava.sql.Connection;importjava.sql.SQLException;importjava.sql.ResultSet;importjava.sql.Statement;publicclassPG{publicstaticvoidmain(String[]args){System.out.println("PostgreSQLJDBC......
  • 解析properties文件通用Java工具类
    importcom.sun.xml.internal.bind.v2.TODO;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;imp......
  • Java 枚举(Enums)解析:提高代码可读性与易维护性
    接口在Java中,实现抽象的另一种方式是使用接口。接口定义接口是一个完全抽象的类,用于将具有空方法体的相关方法分组://接口interfaceAnimal{publicvoidanimalSound();//接口方法(没有具体实现体)publicvoidrun();//接口方法(没有具体实现体)}实现接口要访问......
  • 卡码java基础课 | 9.打印正方形
    学习内容:通过一道题目来学习使用循环嵌套。例题:解:点击查看代码importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn=sc.nextInt();for(intro......
  • java定时任务
    一单机定时任务Timerjava.util.Timer是JDK1.3开始就已经支持的一种定时任务的实现方式。Timer内部使用一个叫做TaskQueue的类存放定时任务,它是一个基于最小堆实现的优先级队列。TaskQueue会按照任务距离下一次执行时间的大小将任务排序,保证在堆顶的任务最先执行。这样......
  • 卡码java基础课 | 8.奇怪的信
    学习内容:通过一道题加深对取模和除法的理解例题:解:点击查看代码importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);while(sc.hasNext()){intnum......
  • 从零开始搭建Springboot开发环境(Java8+Git+Maven+MySQL+Idea)之一步到位
    说明所谓万事开头难,对于初学Java和Springboot框架的小伙伴往往会花不少时间在开发环境搭建上面。究其原因其实还是不熟悉,作为在IT界摸爬滚打数年的老司机,对于各种开发环境搭建已经了然于胸,自己当年也是这么过来的。今天我就毕其功于一役,解放大家的时间,让凡人的环境配置见鬼去吧......
  • JAVA API:ArrayList(泛型类)基本使用
    ArrayList代表的是一种集合,一种容器,类似于数组。 容器主要操作:增删改查   packagecom.itheima.ArrayList;importjava.util.ArrayList;importjava.util.List;publicclassdemo{publicstaticvoidmain(String[]args){ArrayListlist=new......