基础知识
前言:大家好,我是小威,一个明天即将入职准大三学生。本篇将记录前几次面试中经常被问到的知识点。
本篇文章记录的基础知识,适合在学Java的小白,也适合复习中,面试中的大佬🤩🤩。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
小威在此先感谢各位大佬啦~~🤞🤞
以下正文开始
@[toc]
🧁创建线程的三种方法
创建线程有三种方法,分别是:
- 继承Thread类;
- 实现Runnable接口,重写run()方法;
- 实现Callable接口
🍦继承Thread类
-
定义一个类继承Thread类,并重写该类的run⽅法,该run方法的方法体里面就表示了线程要完成的任务。我们把run()方法称为执行体;
-
创建Thread子类的实例对象,也就是创建了线程对象;
-
手动调用线程对象的start()方法来启动该线程。
🍵实现Runnable接口
因为类只支持单方面的继承,所以第一种创建线程的方法有一定的局限性,而接口可以实现多个。
-
定义一个Runnable接口的实现类,并重写该接⼝的run()⽅法,我们所重写的run()⽅法的⽅法体同样是该线程的线程执行体;
-
创建 Runnable实现类的实例对象;
-
使用Thread有参构造方法创建线程实例,并将Runnable接口的实现类的实例对象作为参数传入;
-
调⽤线程对象的start()⽅法来启动该线程。
🍸实现Callable接口
通过Callable和Future创建线程
-
创建Callable接⼝的实现类,并且重写Callable接口里面的call()⽅法,该call()方法即为线程执⾏体,并且有返回值。
-
创建Callable实现类的实例,使⽤FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()⽅法的返回值。
-
使⽤FutureTask对象作为Thread对象的target创建并启动新线程。
-
调⽤FutureTask对象的get()⽅法来获得子线程执⾏结束后的返回值
🍬try…catch和finally
首先,try…catch对异常的捕获是为了使程序能够有效地执行。
try…catch…finally结构
try
{
执行的代码,其中可能有异常。如果发现异常,会立即跳到catch执行。否则不会执行catch里面的内容
}
catch(Exception e)
{
try里面执行的代码发生了异常才会进行catch处理
}
finally
{
不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally
}
try-catch-finally的执行顺序是:
- 不管有没有出现异常,finally块中的代码都会执行;
- 当try和catch中有return时,finally仍然会执行;
- finally是在return后面的表达式运算后执行的
try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同时省略,也就是说有 try 的时候,必须后面跟一个 catch 或者 finally。
🍭Linux文件数字权限
首先解释文件中r ,w, x, - 的含义,r是只读权限,w是写的权限,x是可执行权限, -是没有任何权限。
目录中 r w x的含义,r具有ls(列出目录下的文件)权限,w是在目录上可以增加、删除、创建权限,x是具有ls –l(以长格式的形式查看当前目录下所有可见文件的属性)权限。
数字如何表示权限呢?
我们规定读(r)为4,写(w)为2,执行权限(x)为1。
所以
rwx为7,rw为6,rx为5,wx为3等。
而它表示的权限分为自己,自己群组其他成员,其它组。例如:
chmod 777 file //所有人都可读,写,执行
chmod 700 file //自己可读,写,执行,其他人不可以
chmod 775 file //自己和同组人员可读,写,执行,而其他组可读,执行,不可写
- 点赞
- 收藏
- 关注作者
评论(0)