面试篇
文章平均质量分 75
迷路国王
丰富有趣
展开
-
java线程池面试题----Executor框架解读实战
Executor 简介从代码上看,Executor 是一个简单的接口,但它却是整个异步任务执行框架的基础,这个框架能支持多种不同类型的任务执行策略。他提供了一种标准的方法将任务的提交过程和执行过程解耦开来,任务用 Runnable 来表示。Executor 基于生产者-消费者模式,提交任务的线程相当于生产者,执行任务的线程相当于消费者。同时,Executor 的实现还提供了对任务执行的生命周期管理的支持。Executor 引入的原因大多数并发应用程序都是围绕[任务执行]来构造,应用程序的工作可以被分.原创 2021-08-01 22:22:37 · 217 阅读 · 0 评论 -
java线程池面试题-----手写线程池实战
一、线程池实战例子项目背景:需要查出一百个用户的信息,并且给他们的邮箱发送邮件,打印出最终结果用户类public class User { private Integer id; private String email; public User(Integer id, String email) { this.id =id; this.email =email; } public String getEmail() {原创 2021-08-01 22:17:36 · 237 阅读 · 0 评论 -
java面试题---手写一个简单版的线程池
有些人可能对线程池比较陌生,并且更不熟悉线程池的工作原理。所以他们在使用线程的时候,多数情况下都是new Thread来实现多线程。但是,往往良好的多线程设计大多都是使用线程池来实现的。为什么要使用线程降低资源的消耗。降低线程创建和销毁的资源消耗。提高响应速度:线程的创建时间为T1,执行时间T2,销毁时间T3,免去T1和T3的时间提高线程的可管理性下图所示为线程池的实现原理:调用方不断向线程池中提交任务;线程池中有一组线程,不断地从队列中取任务,这是一个典型的生产者-消费者模型。要实现一个原创 2021-08-01 22:08:46 · 713 阅读 · 3 评论 -
java面试---线程池分析和线程的生命周期解读
面试必问:面试问题1:Java的线程池说一下,各个参数的作用,如何进行的? 面试问题2:按线程池内部机制,当提交新任务时,有哪些异常要考虑。面试问题3:线程池都有哪几种工作队列?面试问题4:使用无界队列的线程池会导致内存飙升吗? 面试问题5:说说几种常见的线程池及使用场景?线程池概念线程池: 简单理解,它就是一个管理线程的池子。它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为线程其实也是一个对象,创建一个对象,需要经过类加载过程,销毁一个对象,需要走GC垃圾回收流程,都是需转载 2021-07-31 18:34:29 · 806 阅读 · 0 评论 -
java阻塞队列详解和并发队列的那些事
在之前的线程池的介绍中我们看到了很多阻塞队列,这篇文章我们主要来说说阻塞队列的事。 阻塞队列也就是 BlockingQueue ,这个类是一个接 口,同时继承了 Queue 接口,这两个接口都是在 JDK5 中加入的 。BlockingQueue 阻塞队列是线程安全的,在我们业务中是会经常频繁使用到的,如典型的生产者消费的场景,生产者只需要向队列中添加,而消费者负责从队列中获取。如上图展示,我们生产者线程不断的 put 元素到队列,而消费者从中 take 出元素处理,这样实现了任务与执行.原创 2021-07-31 16:26:14 · 182 阅读 · 1 评论 -
Java并发面试题 — 阻塞队列(BlockingQueue)
什么是阻塞队列阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除方法:当队列为空时,获取元素的线程会等待队列变为非空。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。在阻塞队列不可用时,这两个附加操作提供了4种处理方式,如下所示:抛出异常:原创 2021-07-31 10:25:26 · 680 阅读 · 0 评论 -
java线程面试题:CAS带来的三大问题及解决方案
1.ABA问题因为CAS需要在操作值的时候,检查值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么CAS进行检查的时候发现它的值没有发生变化,但是实际上却变化了。ABA问题的解决思路就是使用版本号。在变量前面加上版本号,每次变量更新的时候把版本号加1,那么A->B->A就会变成1A->2B->3A。从Java 1.5开始,JDK的Atomic包里提供了一个类AtomicStampedReference来解决ABA问题。这个类的compare原创 2021-07-30 10:59:09 · 316 阅读 · 0 评论 -
关于Handler 的这 15 个问题,你都清楚吗?
概述Handler,老生常谈,网上关于它的文章可谓是“泛滥成灾”,不过实际开发中用得不多。毕竟,现在写异步,RxAndroid链式调用、Kotlin协程同步方式写异步代码,不香么?不过,面试官还是喜欢章口就来一句:说下 Android 消息机制当然,应对方法也很简单,找一篇《…Handler详解》之类的文章,背熟即可~不过,对于我这种好刨根问底的人来说,自己过一遍源码心理才踏实,而且,我发现「带着问题」看源码,思考理解本质,印象更深,收获更多,遂有此文。罗列下本文提及的问题,如有答不出的可按原创 2020-08-08 13:25:28 · 1060 阅读 · 0 评论