A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 小刀葛小伦 于 2019-1-18 09:56 编辑

1.3 异常
掌握 Throwable 继承体系。
Java 异常体系:
Throwable(异常和错误的顶层父类)
|----- Error:错误类。表示的是程序在运行过程中出现的错误。错误的发生都属于系统
级别。(
JVM 是运行操作系统上, JVM 操作内存是需要借助操作系统,如果内在发生错误,
会由操作系统反馈给
JVM
通常在程序中发生错误的原因是因为程序在书写时存在问题,而
JVM 运行有
问题的代码就会引发内存出错。解决错误的方案:修改源代码
|----- Exception:异常类。程序在运行过程中,出现了异常现象:数组越界、类型转换
异常等。通常在程序中如果发生了异常,是有专门针对异常处理的方案(处理方案是由开发
人员自己制定)
程序中异常的发生通常是因为程序在操作数据时引发的,解决异常的方
案是:声明、捕获
(学习以
Exception 为主,开发也主要以 Exception 为主)
ᨀ示:声明最终还需要使用捕获来处理异常
异常类的分类:
  
运行时异常: RuntimeException
编译时异常: Exception
异常的处理
声明: 其实就是程序中遇到异常时,自己不处理,交给其它程序处理
关键字: throws
捕获: 其实就是在程序中遇到异常时,不会交给其它程序处理,自己处理
关键字: try 、 catch、 finally
注意: 1,在使用 throw 抛出异常代码的后面,不能书写任意代码。
2,如果使用 try...catch...finally 结构的, catch 中抛出异常后面如果有其他语句,执行
时先执行 finally 语句再去执行 catch 中的其他语句
3, try..catch..catch 结构中必须按照子类到父类的顺序写
1.4 多线程
(1) 掌握 Executors 可以创建的三种线程池的特点及弁用范围。
1.继承 Thread 类,重写父类 run()方法
2.实现 runnable 接口
3.使用 ExecutorService、 Callable、 Future 实现有返回结果的多线程(JDK5.0 以后)
(2) 多线程同步机制。
在需要同步的方法的方法签名中加入 synchronized 关键字。
使用 synchronized 块对需要进行同步的代码段进行同步。
使用 JDK 5 中提供的 java.util.concurrent.lock 包中的 Lock 对象。
一段 synchronized 的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java
里边就是拿到某个同步对象的搀(一个对象只有一把搀); 如果这个时候同步对象的搀被其
他线程拿走了,他(这个线程)就只能等了(线程阻塞在搀池 等待队列中)。 取到搀后,
他就开始执行同步代码(被 synchronized 修饰的代码);线程执行完同步代码后马上就把搀还
给同步对象,其他在搀池中 等待的某个线程就可以拿到搀执行同步代码了。这样就保证了
同步代码在统一时刻只有一个线程在执行。
(3)线程的几种可用状态。
线程在执行过程中,可以处于下面几种状态:
就绪(Runnable):线程准备运行,不一定立马就能开始执行。
运行中(Running):进程正在执行线程的代码。
等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。
睡眠中(Sleeping):线程被强制睡眠。
I/O 阻塞(Blocked on I/O):等待 I/O 操作完成。
同步阻塞(Blocked on Synchronization):等待获取搀。
死亡(Dead):线程完成了执行。
(4)什么是死搀(deadlock)?
两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死搀。结果就是两个进程
都陷入了无限的等待中。
(5)如何确保 N 个线程可以访问 N 个资源同时又不导致死搀?
使用多线程的时候,一种非常简单的避免死搀的方式就是:指定获取搀的顺序,并强制线程
按照指定的顺序获取搀。因此,如果所有的线程都是以同样的顺序加搀和释放搀,就不会出
现死搀了。



1 个回复

倒序浏览
看一看。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马