理论

1.什么是interface(接口)。

interface是面向对象编程语言中接口操作的关键字,功能是把所需成员组合起来,用来装封一定功能的集合。它好比一个模板,在其中定义了对象必须实现的成员,通过类或结构来实现它。

2.什么是抽象类(abstract)。

由abstract修饰的类叫抽象类。抽象的类无法进行实例化,因为他不是具体存在的类,或者说这样的类还不够完善,不能直接使用new关键字调用其构造器生成该类的对象。

3.什么是面对对象。

其本质是以建立模型体现出来的抽象思维过程和面向对象的方法,是一种编程思维,也是一种思考问题的方式。面向对象的三大特性:封装,继承,多态。

4.什么是接口。

在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

5.什么是泛型。

泛型:就是一种不确定的数据类型。

比如:ArrayList<E> E就是泛型。 这种不确定的数据类型需要在使用这个类的时候才能够确定出来。// 泛型可以省略,如果省略,默认泛型是Object类型。

泛型的好处: 1. 省略了强转的代码。 2. 可以把运行时的问题提前到编译时期。

6.什么是线程。

线程是程序中部分代码的走向,线程是进程中最小的执行单位。

7.线程的创建方式和区别。

集成thread,重写run方法

实现runnable接口,重写run方法

实现callable接口,重写call方法,相对runnable,可以声明返回类型

区别:

thread方式,最为简单,可以通过this获取当前线程,但是因为继承了thread类,不能在继承其他类了

runnable方式,子类实现这个接口,可以继承其他的类,多个线程可以共享同一个target对象,没有返回值

callable方式,子类实现这个接口,可以继承其他的类,多个线程可以共享同一个target对象,有返回值

8.多线程如何实现以及Java中的线程池

 实现多线程的方法:继承Thread类、实现Runnable接口

四种线程池

1.newCachedThreadPool创建一个可缓存线程池程

2.newFixedThreadPool 创建一个定长线程池

3.newScheduledThreadPool 创建一个定长线程池

4.newSingleThreadExecutor 创建一个单线程化的线程池

1。    newFixedThreadPool:所有的任务都在核心线程中执行,且核心线程一旦创建,即使任务执行完成,后期一直处于闲置状态,也不会销毁,线程池会一直对这个线程进行维护,直到线程池关闭。如果所有的核心线程都处于活动状态,新加入的任务会被放到linkedblockingqueue这个队列当中,且这个队列没有大小限制。因为核心线程创建后不会被销毁,当新的任务加入时,不需要重新创建线程来执行新的任务,所以相应速度非常快,但是因为核心线程不会销毁,如果长时间处于闲置状态,消耗资源,所以这种线程池一般用于不会有太多任务执行的场景下。

2。  newCachedThreadPool:相当于对threadpoolexcutor的一个封装,他的核心线程数量为0,最大线程数量是Integer.MAX_VALUE,线程池对于线程的维护时间是60秒,如果有新的任务,线程池会去内部寻找是否有闲置线程,如果有将任务分发给该线程,如果没有,创建一个非核心线程去执行,当任务执行完成后,线程会等待60秒,如果没有新的任务,将销毁线程。因为最大线程数是一个非常庞大的值,且对于长时间未接受新任务的线程,会回收,所以基本不会达到最大线程的数量,所以内部传入的队列相当于一个空集合,不会使用到。

3。    newScheduledThreadPool:是一个可定时执行或周期执行任务的线程池,对于非核心线程,执行完毕后会立马回收(scheduleWithFixedDelay当上一个任务执行完成,然后延时时间到后开始执行第二个任务,因为任务具体的执行时间不能确定,所以除第一个任务外,其他任务的触发时间不可预知;scheduleAtFixedRate当上一个任务开始执行,延时时间到后开始执行第二个任务,因为延时是一个固定时间,所以所有任务的触发时间可推断)

4.newSingleThreadPool:这个线程池当中只有一个核心线程,且最大线程也是1个,同时只能执行一个任务,其他所有任务都放在阻塞队列中,且这个队列没有大小限制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数据库 游标存储过程里面类似于指针的 手写创建数据库并更新 内联外联内联:[图片上传中。。。(1)]左外联:[图片...
    陈小飘阅读 211评论 0 0
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,237评论 1 0
  • 1.要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的? ①Item布局,层级越少越好,使用hie...
    fozero阅读 843评论 0 0
  • spring官方文档:http://docs.spring.io/spring/docs/current/spri...
    牛马风情阅读 1,837评论 0 3
  • JavaWeb——Servlet Tomcat工作机制动画演示(点击动图可全屏观看) 什...
    NuvoleBian_8782阅读 243评论 0 0

友情链接更多精彩内容