首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java并发编程
喵呜刷题
创建于2022-03-06
订阅专栏
刷刷面试 三分钟搞定Java并发编程面试问题
等 2 人订阅
共34篇文章
创建于2022-03-06
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
线程池中线程回收是如何处理的?
ThreadPoolExecutor 中线程执行getTask()返回null,就会被回收。 我们来看看getTask方法是怎么处理的: 结论 通过上面代码分析,可以得出结论:
说说你了解的守护线程
什么是守护线程? 守护线程是指在程序运行的时候在后台提供一种通用服务的线程,并且这个线程并不属于程序中不可或缺的部分。守护线程不阻止 Java 虚拟机 ( JVM ) 退出的线程。当所有非
什么是 Thread 的中断标志?
什么是 Thread 的中断标志? 中断 ( interrupt ) 标志或中断状态是线程中断时设置的内部线程标志 ( flag 属性 )。 怎么设置中断标志? 要设置一个线程的中断标志
说说你了解的volatile关键字
volatile是java提供的一种同步手段,只不过它是轻量级的同步,为什么这么说,因为volatile只能保证多线程的内存可见性,不能保证多线程的执行有序性。而要彻底的保证有序性和可见性
Disruptor为什么会这么快?
如果你用过Disruptor可以继续,如果没有可以结束。 工作原理: Disruptor的优点: 没有竞争=没有锁=非常快。 所有访问者都记录自己的序号的实现方式,允许多个生产者与多个消费
说一下 Atomic 的原理?
JDK提供了一些原子操作的类,在java.util.concurrent.atomic下面。如AtomicBoolean,AtomicInteger,AtomicLong都是用原子的方式来
Thread 类的 sleep() 方法和对象的 wait() 方法有什么区别?
sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间,将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复
Runnable 和 Callable 接口有什么区别?
Runnable 接口表示必须在单独的线程中运行的计算单位,它只有一个 run() 方法。Runnable 接口不允许此方法返回值或抛出未经检查的异常。 Callable 接口表示具有返回
Fork Join 框架的用途
Fork Join 框架 这个框架被设计用来解决可以使用分而治之技术将任务分解成更小的问题。 fork操作:当你把任务分成更小的任务和使用这个框架执行它们。 join操作:当一个任务等待它
说说阻塞队列LinkedBlockingQueue与ArrayBlockingQueue的区别
阻塞队列概要 阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞队列支出阻塞添加和阻塞删除方法。
说说你对AQS的理解?
AQS就是一个并发包的基础组件,用来实现各种锁,各种同步组件的。它包含了state变量、加锁线程、等待队列等并发中的核心组件。 AQS对象内部维护了一个volatile int state
说说AQS中的共享锁
Semaphore共享锁 信号量(Semaphore),又被称为信号灯,在多线程环境下用于协调各个线程, 以保证它们能够正确、合理的使用公共资源。信号量维护了一个许可集
说说AQS中的独占锁
获取锁的过程: 当线程调用acquire()申请获取锁资源,如果成功,则进入临界区。 当获取锁失败时,则进入一个FIFO等待队列,然后被挂起等待唤醒。 当队列中的等待线程被唤醒以后就重新尝
Java 如何实现生产者消费者?
Java生产者消费者是最基础的线程同步问题,大概整理了一下有5种生产者消费者的写法,分别如下。 用synchronized对存储加锁,然后用object原生的wait() 和 notify
说说信号量Semaphore
Semaphore是一个计数信号量,常用于限制可以访问某些资源(物理或逻辑的)线程数目。 一个信号量有且仅有3种操作,且它们全部是原子的:初始化、增加和减少 增加可以为一个进程解除阻塞;
说说你对Synchronized的了解
Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现, 无论是显式同步(有明确的 monitorenter 和 monitorexit
多读少写的场景应该使用哪个并发容器,为什么使用它?
并发容器选择 CopyOnWriteArrayList这个容器适用于多读少写。 读写并不是在同一个对象上。在写时会大面积复制数组,所以写的性能差,在写完成后将读的引用改为执行写的对象 使用
说说线程的状态流转
1、新建状态(New): 一个尚未调用 Thread.start() 方法启动的新 Thread 实例。 2、就绪状态(Runnable): 线程对象创建后,其他线程调用了该对象的
如何合理的配置java线程池?
配置线程池时CPU密集型任务可以少配置线程数,大概和机器的cpu核数相当,可以使得每个线程都在执行任务 2)IO密集型时,大部分线程都阻塞,需要多配置线程数,2cpu核数,非阻塞 IO
说说Java线程池
为什么使用线程池 系统启动一个新线程的成本比较高,因为涉及到与操作系统交互。这个时候用线程池可以很好的提高性能, 尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。 原
下一页