高频面试题
文章平均质量分 95
机器挖掘工
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下
展开
-
关于多线程你了解多少?
NEW表示线程刚刚创建。当调用线程的start()方法后,线程就开始执行了(注意这个说法只是为了让我们有个形象的了解),此时线程处于RUNNABLE状态(这里要清楚线程处在这个状态就表示线程所需的一切资源都已经准备好了)。如果线程在执行过程中,遇到了synchronized同步块,就会进入BLOCKED阻塞状态,这时线程处于暂停状态,直到获得请求的锁。WAITING和TIMED_WAITING都表示等待状态,区别在于前者会进入一个无时间限制的等待,后者会进入一个有时限的等待(处于等待状态的线程究竟在等什么呢原创 2024-08-27 20:36:55 · 779 阅读 · 5 评论 -
重新认识AbstractQueuedSynchronizer
AbstractQueuedSynchronizer类,并非一个现成的类,而是java并发包(java.util.conncurrent.locks)中的一个抽象基类,主要用于构建锁或其他同步器。它提供了一个框架来实现依赖于共享资源管理的同步器。AbstractQueuedSynchronizer通常又被简称为AQS原创 2024-08-21 22:32:52 · 1337 阅读 · 0 评论 -
ThreadPoolExecutor详解
线程池的任务提交流程为:先判断当前线程池中是否存在正在运行的工作线程,并判断其与核心线程数的关系。如果小于核心线程数,就创建工作线程并执行当前任务;如果大于核心线程数,则将当前提交的任务放置到任务队列中等待有空闲线程时进行调度;如果任务队列中不存在足够的空间,则判断线程池中活跃的线程数与最大线程数的关系,如果小于最大线程数,则创建新的工作线程执行当前被提交的任务;如果大于最大线程数,则启动拒绝策略原创 2024-08-18 21:56:45 · 749 阅读 · 0 评论 -
ThreadLocal“你”真的了解吗?(二)
ThreadLocalMap是Java中ThreadLocal类中的一个内部类,其主要作用是用于实现线程的本地存储(ThreadLocalStorage,即TLS)的功能。每个线程都有一个与之关联的ThreadLocalMap,在这个map中,键是ThreadLocal对象,值则是我们真正想要在当前线程中保存和隔离的变量。原创 2024-02-21 22:46:33 · 1176 阅读 · 3 评论 -
ThreadLocal“你”真的了解吗?(一)
总的来说,ThreadLocal通过为每个线程维护一份独立的数据副本,巧妙地实现了多线程环境下的数据隔离和安全性,并简化了代码的编写,减少了同步块或锁的使用。但它也要求开发者关注并正确管理其生命周期,以免引发内存泄露问题原创 2024-02-19 23:04:39 · 1384 阅读 · 1 评论