文章目录
- 1. 多线程
- 1.1 创建线程的三种方式
- 多线程的创建方式一:继承Thread类
- 多线程的创建方式二:实现Runnable接口
- 多线程的创建方式三:实现Callable接口
- 三种线程的创建方式对比
- Thread的常用方法
- 1.2 线程安全
- 线程同步
- 方式一:同步代码块
- 方式二:同步方法
- 方式三:lock锁
- 1.3 线程池
- 什么是线程池
- 创建线程池
- 方式一:通过ThreadPoolExecutor创建线程池
- 1. 处理Runnable任务
- 2. 处理Callable任务
- 方式二:通过Executors创建线程池
- 1.4 并发、并行
- 2. 网络编程
- 2.1 IP地址
- 2.2 端口
- 2.3 通信协议
- UDP协议
- TCP协议
- BS架构的原理
- 3. 几个重要的类
- 3.1 时间相关的获取方案
- 3.2 字符串的高效操作方案
- 3.3 BigDecimal
- 4. 单元测试
- 5. 反射
- 5.1 反射获取Class对象
- 5.2 反射获取类中的成分并操作
- 5.3 反射的基本作用
- 6. 注解
- 6.1 自定义注解
- 6.2 元注解
- 6.3 注解的解析(反射)
- 7. 动态代理
1. 多线程
线程(Thread)是一个程序内部的一条执行流程。
程序中如果只有一条执行流程,那这个程序就是单线程的程序。
1.1 创建线程的三种方式
多线程的创建方式一:继承Thread类
多线程的创建方式二:实现Runnable接口
多线程的创建方式三:实现Callable接口
三种线程的创建方式对比
Thread的常用方法
1.2 线程安全
多个线程,同时操作同一个共享资源的时候,可能会出现业务安全问题。
线程同步
线程同步是线程安全问题的解决方案。
核心思想:让多个线程先后依次访问共享资源,这样就可以避免出现线程安全问题。
常见方案:加锁。即每次只允许一个线程加锁,加锁后才能进入访问,访问完毕后自动解锁,然后其他线程才能再加锁进来。
方式一:同步代码块
方式二:同步方法
方式三:lock锁
1.3 线程池
什么是线程池
创建线程池
方式一:通过ThreadPoolExecutor创建线程池
ExecutorService的常用方法
线程池的注意事项
1. 处理Runnable任务
2. 处理Callable任务
方式二:通过Executors创建线程池
Executors使用可能存在的陷阱
1.4 并发、并行
2. 网络编程
基本的通信架构
基本的通信架构有2种形式:CS架构( Client客户端/Server服务端 )、BS架构(Browser浏览器/Server服务端)。
Java提供了哪些网络编程解决方案?
java.net.*包下提供了网络编程的解决方案。
网络编程三要素:IP、端口、协议
2.1 IP地址
IP域名
DNS域名解析
公网IP、内网IP
InetAddress类
2.2 端口
用来标记标记正在计算机设备上运行的应用程序,被规定为一个 16 位的二进制,范围是 0~65535。
2.3 通信协议
开放式网络互联标准:OSI网络参考模型
传输层的2个通信协议
UDP协议
UDP通信的实现
TCP协议
TCP通信的实现
BS架构的原理
每次请求都开一个新线程,到底好不好?
高并发时,容易宕机!解决办法:使用线程池优化。
3. 几个重要的类
3.1 时间相关的获取方案
3.2 字符串的高效操作方案
StringBuilder
3.3 BigDecimal
用于解决浮点型运算时,出现结果失真的问题。
BigDecimal的常见构造器、常用方法
4. 单元测试
单元测试就是针对最小的功能单元:方法,编写测试代码对其进行正确性测试。
Junit单元测试框架
可以用来对方法进行测试,它是第三方公司开源出来的(很多开发工具已经集成了Junit框架,比如IDEA)
Junit单元测试的使用步骤
5. 反射
反射就是:加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等)。
5.1 反射获取Class对象
5.2 反射获取类中的成分并操作
5.3 反射的基本作用
6. 注解
6.1 自定义注解
注解的原理
注解的作用
6.2 元注解
指的是:注解注解的注解。
6.3 注解的解析(反射)
7. 动态代理
如何为Java对象创建一个代理对象?