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面试:多线程与并发的主要内容,如果未能解决你的问题,请参考以下文章