当前位置: 首页 > 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.lryc.cn/news/625252.html

相关文章:

  • 如何使用 React 101 的 Highcharts 包装器
  • MongoDB 查询方法与高级查询表(Python版)
  • Spring AI + MCP Client 配置与使用详解
  • SSH 登录失败(publickey)问题总结
  • Spring AI Alibaba 项目接入兼容 OpenAI API 的大模型
  • 管理本地用户和组:红帽企业 Linux 系统安全的基础
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(4):31-40语法
  • Linux 中断机制深度分析
  • 如何生成和安全保存私钥?
  • 【DDIA】第十章:解析Reduce端连接与分组技术
  • gflags框架安装与使用
  • 【SkyWalking】单节点安装
  • 数字货币钱包的类型、特点及使用场景
  • 8.18网络编程——基于UDP的TFTP文件传输客户端
  • Kafka文件存储机制
  • LeetCode100 -- Day1
  • LeetCode 每日一题 2025/8/11-2025/8/17
  • STM32学习笔记14-I2C硬件控制
  • 嵌入式 C++ 语言编程规范文档个人学习版(参考《Google C++ 编码规范中文版》)
  • 朝花夕拾(七)--------从混淆矩阵到分类报告全面解析​
  • 远程访问公司内网电脑怎么操作?3个简单通用的跨网异地连接管理计算机方法
  • 安全基础DAY6-服务器安全检测和防御技术
  • 超级云平台:重构数字生态的“超级连接器“
  • 2025年- H98-Lc206--51.N皇后(回溯)--Java版
  • Hadoop - 1:Hadoop 技术解析;Hadoop是什么;Hadoop优势;Hadoop组成;HDFS、YARN、MapReduce 三者关系
  • <数据集>遥感飞机识别数据集<目标检测>
  • Ubuntu下无法在huggingface下载指定模型的解决方法
  • FreeRTOS学习笔记(二)
  • MySQL的多版本并发控制(MVCC):
  • Windows系统上使用GIT