码迷,mamicode.com
首页 > 编程语言 > 详细

java面试:多线程与并发

时间:2018-12-28 23:39:10      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:card   接口   maximum   read   cal   后台   OLE   过程   dfa   

关键词

多线程,并发,线程池

多线程

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面试:多线程与并发

标签:card   接口   maximum   read   cal   后台   OLE   过程   dfa   

原文地址:https://www.cnblogs.com/expiator/p/10193315.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!