java面试:多线程与并发

Posted 乐之者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java面试:多线程与并发相关的知识,希望对你有一定的参考价值。

关键词

多线程,并发,线程池

多线程

Q:如何新建一个线程?
继承Thread,或者实现Runnable接口,或者通过Callable接口实现
Q:线程池有没有了解过?为什么要用线程池?
新建线程的开销太大了,使用线程池可以节省系统资源。
Q:线程池的参数有哪些?

  • 参数如下:
    public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit, BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler);
  • corePoolSize:核心池的大小
  • maximumPoolSize:线程池的最大线程数,它表示在线程池中最多能创建多少个线程;
  • keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止。
  • unit:参数keepAliveTime的时间单位
  • workQueue:一个阻塞队列,用来存储等待执行的任务。
  • handler:执行拒绝策略的对象,也就是拒绝任务处理器。
    ThreadPoolExecutor.AbortPolicy: 丢弃任务并抛出RejectedExecutionException异常。 (默认) ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。 ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程) ThreadPoolExecutor.CallerRunsPolicy:由调用线程处理该任务
  • threadFactory: 定义如何启动一个线程,可以设置线程的名称,并且可以确定是否是后台线程等。

Q:线程池有哪些类型?有什么不同?

并发

Q:线程安全是什么?
Q:同步有哪些?
Q:锁有哪些?
Q:AQS有没有了解过

未完待续










以上是关于java面试:多线程与并发的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程与并发库高级应用-工具类介绍

Java多线程与并发库高级应用-工具类介绍

一篇博客带你轻松应对java面试中的多线程与高并发

2020年Java多线程与并发系列22道高频面试题(附思维导图和答案解析)

Java多线程与并发库4.传统线程同步通信技术

Java进阶之光!2021必看-Java高级面试题总结