美文网首页面试题
【面试大纲】Java多线程

【面试大纲】Java多线程

作者: bearPotMan | 来源:发表于2019-12-08 21:23 被阅读0次

创建线程的方式

只有一种,就是 new Thread()!
即便是使用线程池,它也是这样的。

实现线程的方式

  • 继承 Thread 类;
  • 实现 Runnable接口,重写run方法【run方法无返回值】;
  • 实现 Callable 接口,重写call方法【call方法有返回值】。

线程的生命周期

那顺便借一张图,简单复习一下操作系统层面线程的生命周期:


出自艿艿的博客-芋道源码

线程池几个参数的含义

  • int corePoolSize:核心线程数,即便它们处于空闲状态也要保留在池中的线程数;
  • int maximumPoolSize:池中允许的最大线程数
  • long keepAliveTime:当线程数大于核心线程数时,这是多余的空闲线程将在终止之前等待新任务的最长时间;
  • TimeUnit unit:keepAliveTime参数的时间单位;
  • BlockingQueue<Runnable> workQueue:在执行任务之前用于保留任务的队列。 此队列将仅保存由 execute 方法提交的 Runnable 任务;
  • ThreadFactory threadFactory:执行程序创建新线程时要使用的工厂;
  • RejectedExecutionHandler handler:因达到线程边界和队列容量而被阻止执行时使用的处理程序;

四种拒绝策略

  • AbortPolicy:抛出RejectedExecutionException异常;
  • DiscardPolicy:不执行任何操作;
  • DiscardOldestPolicy:丢弃最旧的未处理请求;
  • CallerRunsPolicy:在调用者线程中执行任务。

线程池运行过程

  • 当线程池中运行的线程数小于 coolPoolSize 时,每当来新的任务的时候,启动一个线程去执行当前的任务;
  • 当线程池中运行的线程数大于等于 coolPoolSize 时,新来的任务将进入阻塞队列等待被执行;
  • 当阻塞队列中任务满了的时候,将使用 maximumPoolSize 设置的值,即启动额外的线程来执行新来的任务;
  • 当线程池中运行的线程数大于等于 maximumPoolSize 时,启动拒绝策略来拒绝后续的任务。

上面只是一个大致的执行流程,详细的流程比上面要复杂的多,具体可以查阅 execute(Runnable command) 方法和 addWorker(Runnable firstTask, boolean core) 方法的源码!

好了,多线程的大纲差不多就这些吧!继续加油!!!

相关文章

  • 【面试大纲】Java多线程

    创建线程的方式 只有一种,就是 new Thread()!即便是使用线程池,它也是这样的。 实现线程的方式 继承 ...

  • 网络编程 - 收藏集 - 掘金

    15 个高级 Java 多线程面试题及回答 - 后端 - 掘金在任何Java面试当中多线程和并发方面的问题都是必不...

  • Tools - 收藏集 - 掘金

    15 个高级 Java 多线程面试题及回答 - 后端 - 掘金在任何Java面试当中多线程和并发方面的问题都是必不...

  • Java线程面试题 Top 50 (转载)

    Java线程面试题 Top 50 (转载) JAVA多线程和并发基础面试问答(转载)

  • Java中wait、sleep和yield的区别

    Java中wait、sleep的区别或者Java中sleep、yield的区别是Java面试或者多线程面试中最常问...

  • Java面试题

    Java面试 Java、框架、JVM Java 基础、容器、多线程、反射、对象拷贝、Java web模块、异常模块...

  • Java面试大纲

    转载:http://url.cn/5yZONtY跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽...

  • Java面试大纲

    项目介绍 大部分情况,这是一场面试的开门题,面试官问这个问题,主要是考察你的概述能力和全局视野。有的人经常抱怨自己...

  • Java面试大纲

    答案不全,欢迎补充订正~ Java基础 1、List 和 Set 的区别~List允许重复,有序容器,按照存放顺序...

  • Java面试大纲

    01:项目介绍 此乃面试之时第一环节,主要考察你的概述能力和对业务的熟悉程度, 对需求的分析能力,沟通协作能力,产...

网友评论

    本文标题:【面试大纲】Java多线程

    本文链接:https://www.haomeiwen.com/subject/uomygctx.html