当前位置: 首页 > news >正文

JavaSE高级-02

文章目录

  • 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对象创建一个代理对象?
在这里插入图片描述

http://www.dtcms.com/a/338379.html

相关文章:

  • JDBC的使用
  • 【Python】Python Socket 网络编程详解:从基础到实践​
  • Street Crafter 阅读笔记
  • IDEA创建项目
  • MYSQL中读提交的理解
  • MySQL新手教学
  • lesson41:MySQL数据库进阶实战:视图、函数与存储引擎全解析
  • springBoot启动报错问题汇总
  • OVS:ovn是如何支持组播的?
  • LwIP 核心流程总结
  • wishbone总线
  • thinkphp8:一、环境准备
  • c++26新功能—可观测检查点
  • torch.nn.Conv1d详解
  • C++最小生成树
  • 高等数学 8.5 曲面及其方程
  • Python打卡Day45 预训练模型
  • 【加密PMF】psk-pmk-ptk
  • 【168页PPT】IBM五粮液集团数字化转型项目实施方案建议书(附下载方式)
  • 块体不锈钢上的光栅耦合表面等离子体共振的复现
  • 九联科技UMA223-H低功耗蜂窝模组在物联网设备中的应用与价值分析
  • 信号上升时间Tr不为0的信号反射情况
  • 工具集成强化学习:AI数学推理能力的新跃迁
  • Milvus向量数据库安装步骤
  • DRG/DIP支付改革如何通过大数据分析优化病种分组和权重调整?
  • 知识蒸馏 - 各类概率分布
  • CPP异常
  • 公司无公网IP,如何将内网服务,给外面异地连接使用?远程办公可通过什么访问?
  • 内联汇编(Inline Assembly)是什么?
  • redis命令行学习