你通俗易懂的理解——线程、多线程与线程池
一:异常处理
1.1 异常概述
(1)场景
(2)定义
(3)异常抛出机制
Java把不同的异常用不同的类表示
(4)如何对待异常
1.2 常见异常类
(1)Throwable
(2)Error
(3)Exception
(4)编译时异常和运行时异常
编译时异常
运行时异常
1.3 异常处理
(1)概述
(2)异常处理方式
(3)try-catch-finally
抓抛模型
抓的过程,生成异常类对象后将对象抛出,程序不执行其后代码
抓:对抛出的异常对象进行捕获处理
基本结构
使用细节
(4)finally
是否必须写
一定要声明在finally中的代码
(5)throws
是否真正处理了异常
(6)自定义异常
自定义异常类
使用自定义异常类
使用自定义异常原因
二:线程
2.1 相关概念
(1)程序、进程、线程
程序是一段代码,进程是程序的执行过程(从创建到使用到消亡),线程
(2)线程调度
分时调度:所有线程轮流使用CPU的使用权
抢占式调度:让优先级高的线程优先使用CPU
2.2 常用方法和生命周期
(1)常用方法
构造器
Sleep(long mills):静态方法,调用时,可以使得当前线程睡眠指定毫秒数
(2)生命周期
阻塞一定是临时状态
2.3 线程创建方式
(1)步骤
(2)代码
使用实现Runnable接口的方式(提供了Runnable接口匿名实现类的匿名对象)
2.4 线程安全
(1)问题描述:多线程卖票出现了重票和错票
(2)解决思路:保证一个线程a在操作ticket的过程中,其它线程必须等待,知道线程a操作ticket结束以后,其它线程才可以操作共享数据
(3)实现
使用线程同步机制(同步代码块或同步方法)
需要被同步的代码,在被synchronized包裹以后,就使得一个线程在操作这些代码的过程中,其它线程必须等待
同步监视器:俗称锁,哪些线程获取了锁,哪个线程就能执行需要被同步的代码
(4)代码