主题
Java并发
- ✅什么是多线程中的上下文切换?
- ✅能不能谈谈你对线程安全的理解?
- ✅什么是并发,什么是并行?
- ✅线程有几种状态,状态之间的流转是怎样的?
- ✅什么是守护线程,和普通线程有什么区别?
- ✅JDK21 中的虚拟线程是怎么回事?
- ✅创建线程有几种方式?
- ✅run/start、wait/sleep、notify/notifyAll区别?
- ✅什么是线程池,如何实现的?
- ✅线程数设定成多少更合适?
- ✅什么是ThreadLocal,如何实现的?
- ✅线程同步的方式有哪些?
- ✅什么是死锁,如何解决?
- ✅什么是Java内存模型(JMM)?
- ✅并发编程中的原子性和数据库ACID的原子性一样吗?
- ✅synchronized是怎么实现的?
- ✅synchronized锁的是什么?
- ✅synchronized是如何保证原子性、可见性、有序性的?
- ✅synchronized的锁升级过程是怎样的?
- ✅synchronized的重量级锁很慢,为什么还需要重量级锁?
- ✅synchronized的锁优化是怎样的?
- ✅volatile能保证原子性吗?为什么?
- ✅int a = 1 是原子性操作吗
- ✅volatile是如何保证可见性和有序性的?
- ✅有了synchronized为什么还需要volatile?
- ✅如何理解AQS?
- ✅什么是CAS?存在什么问题?
- ✅CAS一定有自旋吗?
- ✅什么是Unsafe?
- ✅CAS在操作系统层面是如何保证原子性的?
- ✅synchronized和reentrantLock区别?
- ✅公平锁和非公平锁的区别?
- ✅LongAdder和AtomicLong的区别?
- ✅CountDownLatch、CyclicBarrier、Semaphore区别?
- ✅父子线程之间怎么共享/传递数据?
- ✅有三个线程T1,T2,T3如何保证顺序执行?
- ✅如何对多线程进行编排
- ✅三个线程分别顺序打印0-100
- ✅什么是总线嗅探和总线风暴,和JMM有什么关系?
- ✅CompletableFuture的底层是如何实现的?
- ✅ForkJoinPool和ThreadPoolExecutor区别是什么?
- ✅有了InheritableThreadLocal为啥还需要TransmittableThreadLocal?
- ✅AQS是如何实现线程的等待和唤醒的?
- ✅如何保证多线程下 i++ 结果正确?
- ✅Thread.sleep(0)的作用是什么?
- ✅有哪些实现线程安全的方案?
- ✅为什么不建议通过Executors构建线程池
- ✅线程池的拒绝策略有哪些?
- ✅线程是如何被调度的?
- ✅为什么JDK 15要废弃偏向锁?
- ✅Java是如何判断一个线程是否存活的?
- ✅什么是可重入锁,怎么实现可重入锁?
- ✅如何实现主线程捕获子线程异常
- ✅为什么不能在try-catch中捕获子线程的异常?
- ✅Java线程出现异常,进程为啥不会退出?
- ✅什么是happens-before原则?
- ✅happens-before和as-if-serial有啥区别和联系?
- ✅如何让Java的线程池顺序执行任务?
- ✅ThreadLocal的应用场景有哪些?
- ✅ThreadLocal为什么会导致内存泄漏?如何解决的?
- ✅到底啥是内存屏障?到底怎么加的?
- ✅有了CAS为啥还需要volatile?
- ✅AQS的同步队列和条件队列原理?
- ✅什么是AQS的独占模式和共享模式?
- ✅AQS为什么采用双向链表?
- ✅有了MESI为啥还需要JMM?
- ✅为什么虚拟线程不能用synchronized?
- ✅为什么虚拟线程不要和线程池一起用?
- ✅为什么虚拟线程尽量避免使用ThreadLocal
- ✅sychronized是非公平锁吗,那么是如何体现的?
- ✅synchronized 的锁能降级吗?
- ✅如何实现无锁化编程?
- ✅如何在 Java 中实现高效的异步编程?如何避免回调地狱?
- ✅线程池中使用ThreadLocal会有哪些潜在风险?
- ✅动态线程池的原理是什么?
- ✅什么是伪共享,如何解决伪共享?
- ✅介绍下JUC,都有哪些工具类?
- ✅什么是活锁,和死锁有什么区别?
- ✅Java中有哪些锁?
- ✅JDK25的ScopedValue是什么?为什么可以替代ThreadLocal?
- ✅线程池有哪些核心参数?
- ✅new Thread().start() 创建一个线程时,操作系统层面发生了什么?
- ✅怎么停止一个线程,为什么不推荐 stop?