前言
提示:这里为每天自己的学习内容心情总结;
Learn By Doing,Now or Never,Writing is organized thinking.
今天的学习状态还是不太好,总是喜欢看B站,但是一步一步来吧,前阵子太摆烂了,加油。
提示:以下是本篇文章正文内容
一、今天学习了什么?
- final–finally–finalize,三者的区别?
- 自定义线程池。
二、关于问题的答案
1.三者的区别
final关键字,既可以修饰变量、也可以修饰方法、还可以修饰类。
当修饰的为类时,该类就不能被继承了,比如常见的String、Integer等,但是该类的方法可以重载不能被重写。
当修饰的为方法时,方法不能被重写,可以被重载。
当修饰的为变量时,分为两种情况:
- 基本数据类型,变量初始化后就不能再更改值,相当于常量;
- 引用数据类型,变量指向的对象/内存地址,不能变化,但是对象本身的属性可以变。
finally,这个是和try–catch–finally一起使用的。保证无论代码块是否发生异常,最后还可以执行相应的操作,比如释放连接、释放锁资源,关闭I/O流等。
难点:当return语句位与不同的位置时,会有不同的效果。
finalize,是Object类的方法。负责最后资源的关闭,JVM 会自动进行垃圾回收,释放内存空间。在垃圾回收前,会先调用对象的*finalize()*方法,用于释放对象所占用的资源。
2.自定义线程池
线程池主要有两部分组成:工作线程、阻塞队列。
工作线程,负责处理任务,有最大核心数,线程池中的工作线程的数量不能超过这个最大核心数。
阻塞队列,负责添加任务,需要考虑阻塞队列所能容纳最大任务的个数、当阻塞队列已满时,新的任务如何处理,对应的拒绝策略是什么。
总结
提示:这里对文章进行总结:
目前为止没啥难的,加油,希望明天能更认真学习。