java多线程高并发面试题专栏
文章平均质量分 91
以实际场景为主
SlowIsFastyxy
这个作者很懒,什么都没留下…
展开
-
CompletableFuture与FutureTask面试题
参考答案:回调是一种编程模式,它允许我们把一个函数作为参数传递给另一个函数,当某个事件发生时,这个函数会被自动调用。在Java中,我们通常会使用回调来实现事件驱动的编程,比如处理用户界面的事件,处理网络请求的结果等。回调(Callback)是一种常见的编程模式,它允许我们将一个函数作为参数传递给另一个函数,并在需要时调用这个函数。回调通常用于异步编程和事件驱动编程,例如处理用户输入、网络请求等。在Java中,我们可以使用接口来实现回调。// 定义一个回调接口。原创 2023-08-21 01:02:10 · 357 阅读 · 1 评论 -
LuckSupport与线程中断面试题
其中最常用的方法是park()和unpark()方法,分别可以阻塞和唤醒线程,作用类似于wait/notify方法。此外,LockSupport还提供了lock()、unlock()、tryLock()、tryUnlock()等方法,用于实现锁的获取和释放。例如,可以将大的锁拆分成多个小的锁,或者使用更细粒度的锁来减少锁的数量。为了避免死锁,我们需要确保在捕获到该异常后及时释放已经持有的锁,以便其他线程可以获取锁并继续执行。如果锁已经被其他线程占用,那么当前线程将被阻塞,直到锁被释放。原创 2023-08-21 01:13:57 · 40 阅读 · 1 评论 -
syschronized、volatile相关面试题
Java内存模型(JMM)是Java虚拟机规范中定义的一组规则,用于描述Java程序中的多线程运行时内存访问行为。JMM的主要目的是为了解决多线程环境下的内存可见性、原子性和有序性问题,以保证Java程序的正确性和稳定性。JMM将Java虚拟机分为了三个主要区域:堆、栈和方法区。其中,堆是被所有线程共享的一块物理区域,而栈和方法区则是每个线程都有自己独立的一块物理区域。原子性:一个操作要么全部执行成功,要么全部不执行。可见性:一个线程对共享变量的修改,其他线程能够看到。原创 2023-08-21 20:32:03 · 59 阅读 · 1 评论 -
Java线程池面试题
最大线程数(maximumPoolSize):是指线程池中允许的最大线程数。当工作队列满了并且活动线程数达到最大线程数时,如果还有新任务提交,线程池将采取饱和策略来处理任务,即丢弃新任务或者将任务放入队列末尾。核心线程数(corePoolSize):是指线程池中始终保持活跃的线程数量。当工作队列满了并且活动线程数达到核心线程数时,如果有新任务提交,线程池会先检查当前活动线程数是否小于核心线程数,如果是,则创建一个新的线程来处理任务;否则,将任务放入阻塞队列中等待执行。原创 2023-08-20 21:25:54 · 171 阅读 · 0 评论 -
ThreadLocal面试题
答:ThreadLocal是Java中的一个类,它的作用是为每个线程提供一个独立的变量副本。这样,每个线程都可以独立地改变自己的副本,而不会影响其他线程的副本。数据库连接池:在多线程环境下,每个线程都需要访问数据库,使用ThreadLocal可以避免多个线程共享同一个数据库连接,提高性能。事务管理:在分布式系统中,多个服务之间需要协同完成一个事务。使用ThreadLocal可以为每个服务创建一个独立的事务上下文,避免事务冲突。用户会话管理:在Web应用中,每个用户请求都会创建一个新的会话。原创 2023-08-20 04:18:58 · 132 阅读 · 1 评论 -
多线程aqs面试题
作为一位Java程序员,我对Java中的AQS(AbstractQueuedSynchronizer)非常熟悉。AQS是一个用于构建锁和同步器的框架,它提供了一种灵活的方式来实现线程间的协调和同步。构建锁和同步器:AQS提供了一套API,可以方便地构建各种类型的锁和同步器,如ReentrantLock、Semaphore等。提供等待队列:AQS使用一个FIFO的等待队列来管理线程的等待和唤醒操作。线程在获取锁时会被加入到等待队列中,当锁可用时,会从队列中唤醒一个线程。原创 2023-08-20 05:40:13 · 296 阅读 · 1 评论