一道面试题

让我们开门见山,直面主题:Dubbo 服务里面有个服务端,还有个消费端你知道吧?

服务端和消费端都各有一个线程池你知道吧?

那么面试题来了:一般情况下,服务提供者比服务消费者多吧。一个服务消费方可能会并发调用多个服务提供者,每个用户线程发送请求后,会进行超时时间内的等待。多个服务提供者可能同时做完业务,然后返回,服务消费方的线程池会收到多个响应对象。这个时候要考虑一个问题,如何将线程池里面的每个响应对象传递给相应等待的用户线程,且不出错呢?

线程

  • 线程的启动
  • 实现Runnab1e接口
  • 继承Thread类
  • 实现Callable接口
  • 线程的状态
  • 线程的方法
  • 线程的优先级
  • 守护线程
  • 未捕获异常处理器

java支付相关面试题 java中支付面试题_面试

并发编程的问题

  • 线程引入开销:上下文切换与内存同步
  • 线程安全性(原子性+可见性)
  • 死锁

java支付相关面试题 java中支付面试题_Java_02

线程间通信/线程同步 工具使用

  • synchronized
  • Lock
  • volatile
  • Atomic

java支付相关面试题 java中支付面试题_后端_03

Lock使用 深入

  • 可重入锁 ReentrantLock
  • Condition与wait&notify区别
  • await&signal
  • 公平锁
  • 读写锁 ReentrantReadWriteLock
  • LockSupport(锁住的是线程,synchronized锁住的是对象)
  • synchronized与Lock的区别
  • 原子操作类使用

java支付相关面试题 java中支付面试题_后端_04

Java内存模型 线程同步工具原理

  • JMM抽象结构
  • 指令重排序
  • 内存屏障
  • happens-before(抽象概念,基于内存屏障)
  • 顺序一致性
  • volatile原理
  • synchronized原理
  • 原子操作原理
  • 锁的比较
  • 锁的优化
  • 锁的分类
  • 偏向锁(只有一个线程进入临界区)
  • 轻量级锁(多个线程交替进入临界区)
  • 重量级锁(多个线程同时进入临界区)
  • CPU如何实现原子操作
  • Java如何实现原子操作
  • CAS在OpenJDK中的实现

java支付相关面试题 java中支付面试题_java支付相关面试题_05

同步容器

  • ConcurrentHashMap
  • CopyOnWriteArrayList
  • BlockingQueue
  • ThreadLocal

java支付相关面试题 java中支付面试题_面试_06

同步工具使用

  • Semaphore (信号量)
  • Cycli eBarrier (可循环使用的屏障/栅栏)
  • Exchanger (两个线程交换数据)
  • CountDownLatch (闭锁)
  • FutureTask (Future实现类)
  • 将批量同步操作转为异步操作(并行流/CompletableFuture)
  • 多个异步任务合并
  • API

java支付相关面试题 java中支付面试题_java支付相关面试题_07

线程池使用

  • 引入原因
  • 继承体系
  • ExecutorService
  • ScheduledExecutorService
  • ThreadPoolExecutor
  • 创建线程池
  • 线程动态变化
  • 扩展ThreadPoolExecutor
  • ScheduledThreadPoolExecutor
  • Executors
  • CompletionService

java支付相关面试题 java中支付面试题_java_08

J.U.C 源码解析

  • AQS的接口
  • AQS使用实例(互斥锁,tryAcquire只需一次CAS)
  • AQS实现
  • 同步队列
  • 独占式同步状态
  • 共享式同步状态
  • 独占式超时获取同步状态
  • ReentrantLock公平锁
  • ReentrantReadWriteLock
  • 读写状态的设计
  • 写锁的获取与释放
  • 读锁的获取与释放(放弃)
  • 锁降级
  • LockSupport
  • Condition
  • 等待队列
  • AtomicInteger
  • ThreadPoolExeuctor
  • 状态转换
  • 成员变量
  • 构造方法
  • 执行任务

java支付相关面试题 java中支付面试题_java_09

并发体系思维导图

Java内存模型(JMM)

  • 线程通信机制
  • 内存模型
  • synchronized
  • volatile
  • DCL

java支付相关面试题 java中支付面试题_java_10

并发基础

  • AQS
  • CAS

java支付相关面试题 java中支付面试题_java_11

  • ReentrantLock
  • ReentrantReadWriteLock
  • Condition

java支付相关面试题 java中支付面试题_Java_12

并发工具类

  • CyclicBarrier
  • CountDownLatch
  • Semaphore
  • Exchanger

java支付相关面试题 java中支付面试题_Java_13

其他

  • ThreadLocal
  • Fork/Join

java支付相关面试题 java中支付面试题_后端_14

Java并发集合

  • ConcurrentHashMap
  • ConcurrentLinkedQueue
  • Concurr entSkipListMap
  • ConcurrentSkipListSet

java支付相关面试题 java中支付面试题_java支付相关面试题_15

atomic

  • 基本类型类
  • 数组
  • 引用类型
  • 字段类

java支付相关面试题 java中支付面试题_后端_16

阻塞队列

  • ArrayBlockingQueue
  • LinkedBlockingQueue
  • PriorityBlockingQueue
  • DelayQueue
  • SynchronousQueue
  • LinkedTransferQueue
  • LinkedBlockingDeque

java支付相关面试题 java中支付面试题_java_17

线程池

  • Executor
  • Future

java支付相关面试题 java中支付面试题_Java_18