3.异常:运行时期出现的问题(其他自己补,没什么重点)
try-catch-finally实现方式
|---try 执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容
|---catch 除非try里面执行代码发生了异常,否则这里的代码不会执行 ,抛出异常对象
|---finally 不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally
注意:如果没有catch语句块,那么finally块就是必须的。
4.多线程的理解
|---什么是进程:当我们运行硬盘上的某个应用程序的时候,操作系统会把这个应用程序从硬盘上加载到内存中,然后在内存中为这个应用程序
开辟运行自己程序的内存空间。这个内存空间就称为内存中的一个进程。
|---什么是线程:在一个进程中,负责独立运行某个功能,或者某些代码块的那个小单元,就称为当前进程中一个线程。我们的JVM就是一个多线
程的应用程序。线程是用来负责进程中某个独立的功能,或者某段代码块的执行。在执行的过程中,它有自己独立的运行空间,并且多个线程执行不会相互
影响。如果一个CPU只有一个处理核心,那么在某个时刻真正只能去处理一个线程。如果CPU拥有多个处理核心,那么在某个时刻就可以实现多个程序同时执
行了我们创建多线程的目的是让多部分代码能够同时执行
|---创建线程的两种方式:1,继承Thread类,复写run方法,Thread是线程类,没什么好说的
2,由于类的单继承性的局限性,有些类已近继承了其他类,如果它还想实现多继承,就不能继承Thread类了,那么它
就只能实现Runnable接口,该接口抽取了Thread类里面的run方法,这样做的目的是让Thread类就专门用来负责线程的各种操作,让Runnable接口专门用来
封装线程要执行的任务。将Runnable实现类的对象作为参数传递到Thread类构造里面,是为了关联线程任务和线程对象。
|---多线程的几种状态:临时阻塞状态(具备CPU执行资格,不具备执行权),运行状态(线程具备执行资格和执行权),冻结状态(线程不具备CPU执
行资格,线程释放CPU执行权)
|---多线程里面的重点内容:(面试有人被问过)
当多线程执行共享数据时,CPU会在线程间不停切换,这种切换我们是不能控制的,当线程在执行共享数据过程中CPU
是可能切换到其他线程,所以线程就会出现完全问题,这时我们需要使用到同步代码块synchronized。当线程进入到同步代码块里面时,需要获取一把锁,
OBJECT对象都行,其他线程会处于临时阻塞状态,知道该线程把共享数据操作完成才能执行其他数据。还有同步函数,同步函数操作的锁为this(调用这个
方法的对象),静态同步方法的锁为 类名.class
死锁:最常见的原因是锁的嵌套循环,例如if else判断语句里面,当线程满足if条件,获得A锁执行if里面的同步,A同步里面还嵌套
了一个同步,需要B锁,这时线程切换到else条件,获得了B锁执行里面的同步,这个同步里面也嵌套了一个同步,需要获得A锁才能执行。
sleep是线程冷却,比喻说释放魔法技能有技能CD。
|
|