从面试官的角度看Java基础

      如题,今天刚刚面了几个开发,有工作5年的,有工作7年的。原以为Java基础会很扎实,结果大失所望,基础的线程知识都不甚了解。其实,对于中高级开发,java基础要求也是有的,起码得答个百分之九十。下面是一串关于多线程的面试问题,仅供参考:

      1、java创建多线程的方式?三种方式

      2、在项目中如何使用多线程?记住,不能回答上面的三种方式,会让人知道在项目中没有真正使用多线程。应该回答使用线程池。

      3、线程池都有哪几种创建方式?项目中使用哪种?

有四种,应该清楚的回答出来。但是,要注意,项目中哪种都不使用

a、newFixedThreadPool(int nThreads):创建一个固定长度的线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程规模将不再变化,当线程发生未预期的错误而结束时,线程池会补充一个新的线程。

b、newCachedThreadPool():创建一个可缓存的线程池,如果线程池的规模超过了处理需求,将自动回收空闲线程,而当需求增加时,则可以自动添加新线程,线程池的规模不存在任何限制。

c、newSingleThreadExecutor():这是一个单线程的 Executor,它创建单个工作线程来执行任务,如果这个线程异常结束,会创建一个新的来替代它;它的特点是能确保依照任务在队列中的顺序来串行执行。

d、newScheduledThreadPool(int corePoolSize):创建一个固定长度的线程池,而且以延迟或定时的方式来执行任务。

       4、线程池的状态有哪几种?

       5、线程池的核心线程数目如何确定?为什么?

       上面这些问题只是冰山一角,如果对java基础一知半解,很容易掉入面试的陷阱中。当然,通过这种方式筛选面试者能不能胜任工作也很方便。

原文地址:https://www.cnblogs.com/lizhaoE/p/14838867.html