java(多线程基础)

17.多线程基础

线程相关概念

程序:未完成特定任务、用某种语言编写的一组指令的集合。简单的说:就是我们写的代码。
进程
1.进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存空间。当我们使用迅雷,又启动了一个进程,操作系统将为迅雷分配新的内存空间。
2.进程是程序的一次执行过程,或是正在运行的一个程序。是动态过程:有它自身的产生、存在和消亡的过程
什么是线程?
1.线程由进程创建的,是进程的一个实体
2.一个进程可以拥有多个线程。
其他相关概念
1.单线程:同一个时刻,只允许执行一个线程
2.多线程:同一个时刻,可以执行多个线程,比如:一个qq进程,可以同时打开多个聊天窗口,一个迅雷进程,可以同时下载多个文件
在这里插入图片描述

线程基本使用

创建线程的两种方式
在这里插入图片描述
继承 Thread 类
在这里插入图片描述
实现 Runnable 接口
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述#### 继承 Thread vs 实现 Runnable 的区别在这里插入图片描述

线程常用方法

常用方法第一组
在这里插入图片描述
注意事项和细节在这里插入图片描述
常用方法第二组在这里插入图片描述
在这里插入图片描述
用户线程和守护线程
在这里插入图片描述

线程的生命周期

JDK 中用 Thread.State 枚举表示了线程的几种状态在这里插入图片描述
线程状态转换图
在这里插入图片描述

线程的同步

Synchronized在这里插入图片描述
同步具体方法-Synchronized在这里插入图片描述
在这里插入图片描述

互斥锁

在这里插入图片描述

注意细节在这里插入图片描述

线程的死锁

在这里插入图片描述

释放锁

下面操作会释放锁在这里插入图片描述
下面操作不会释放锁在这里插入图片描述

19.IO 流

文件

文件流在这里插入图片描述
常用的文件操作在这里插入图片描述
获取文件的相关信息在这里插入图片描述
在这里插入图片描述
目录的操作和文件删除在这里插入图片描述

IO 流原理及流的分类

在这里插入图片描述

在这里插入图片描述
流的分类在这里插入图片描述

IO 流体系图-常用的类

在这里插入图片描述

在这里插入图片描述
文件 VS 流
在这里插入图片描述

FileInputStream

在这里插入图片描述

FileOutputStream

在这里插入图片描述
FileReader 和 FileWriter 介绍在这里插入图片描述

FileReader

FileReader 相关方法:在这里插入图片描述

FileWriter

FileWriter 常用方法在这里插入图片描述

节点流和处理流

在这里插入图片描述
节点流和处理流一览图在这里插入图片描述
节点流和处理流的区别和联系在这里插入图片描述
处理流的功能主要体现在以下两个方面在这里插入图片描述

处理流-BufferedReader 和 BufferedWriter

在这里插入图片描述

处理流-BufferedInputStream 和 BufferedOutputStream

在这里插入图片描述
介绍 BufferedOutputStream
在这里插入图片描述

对象流-ObjectInputStream 和 ObjectOutputStream

在这里插入图片描述
在这里插入图片描述

 @Test
    public void readDog2() throws IOException {
        String filePath = "e:\\Dog.properties";
        Properties properties = new Properties();
        properties.load(new FileReader(filePath));
        // properties.list(System.out);
        String name = properties.get("name") + "";
        int age = Integer.parseInt(properties.get("age") + "");
        String color = properties.get("color") + "";
        Dog dog = new Dog(name, age, color);
        System.out.println(dog.toString());

        //将Dog对象序列化
        String SerFilePath = "e:\\dog.dat";
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(SerFilePath));
        oos.writeObject(dog);
        oos.close();
        System.out.println("序列化成功!");
    }

    @Test
    public void unSerDog() throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e:\\dog.dat"));
        Dog dog =(Dog) ois.readObject();
        System.out.println(dog);
        ois.close();
        System.out.println("反序列话完成!");
    }

对象流介绍
功能:提供了对基本类型或对象类型的序列化和反序列化的方法 ObjectOutputStream 提供 序列化功能
ObjectInputStream 提供 反序列化功能
在这里插入图片描述
在这里插入图片描述

标准输入输出流

在这里插入图片描述

转换流-InputStreamReader 和 OutputStreamWriter

在这里插入图片描述

打印流-PrintStream 和 PrintWriter

在这里插入图片描述

Properties 类

基本介绍
在这里插入图片描述
在这里插入图片描述

21.网络编程

网络的相关概念

网络通信
在这里插入图片描述
网络
在这里插入图片描述
ip 地址
在这里插入图片描述
ipv4 地址分类
在这里插入图片描述
在这里插入图片描述
域名
在这里插入图片描述
网络通信协议
在这里插入图片描述
在这里插入图片描述
网络通信协议
在这里插入图片描述
TCP 和 UDP
在这里插入图片描述

InetAddress 类

相关方法
在这里插入图片描述

Socket

在这里插入图片描述
在这里插入图片描述

TCP 网络通信编程

在这里插入图片描述
在这里插入图片描述

设置结束标记 socket.shutdownOutput()

bufferedWriter.newLine();// 插入一个换行符,表示写入的内容结束, 注意,要求对方使用 readLine()!!!
bufferedWriter.flush();//如果使用的字符流,需要手动刷新,否则数据不会写入数据通道

netstat 指令
在这里插入图片描述
TCP 网络通讯不为人知的秘密
在这里插入图片描述

UDP 网络通信编程[了解]

在这里插入图片描述
基本流程
在这里插入图片描述
在这里插入图片描述

23.反射(reflection)

反射机制

在这里插入图片描述
Java 反射机制原理示意图!!!
在这里插入图片描述
Java 反射机制可以完成
在这里插入图片描述
反射相关的主要类
在这里插入图片描述
反射优点和缺点
在这里插入图片描述
反射调用优化-关闭访问检查
在这里插入图片描述
在这里插入图片描述

Class 类

基本介绍
在这里插入图片描述
在这里插入图片描述
Class 类的常用方法
在这里插入图片描述

获取 Class 类对象

在这里插入图片描述
在这里插入图片描述

哪些类型有 Class 对象

如下类型有 Class 对象
在这里插入图片描述

类加载

在这里插入图片描述
类加载时机
在这里插入图片描述
类加载过程图
在这里插入图片描述
类加载各阶段完成任务
**加粗样式
**

加载阶段
在这里插入图片描述
连接阶段-验证
在这里插入图片描述
连接阶段-准备
**加粗样式
**


class A {
    //属性-成员变量-字段
    //分析类加载的链接阶段-准备 属性是如何处理
    public int n1 = 10;
    public static int n2 = 20;
    public static final int n3 = 30;
    //1. n1 是实例属性, 不是静态变量,因此在准备阶段,是不会分配内存
    // 2. n2 是静态变量,分配内存 n2 是默认初始化 0 ,而不是 20
    // 3. n3 是 static final 是常量, 他和静态变量不一样, 因为一旦赋值就不变 n3 = 30
}

连接阶段-解析
**加粗样式
**
Initialization(初始化)
在这里插入图片描述

通过反射获取类的结构信息

第一组: java.lang.Class 类
在这里插入图片描述
第二组: java.lang.reflect.Field 类
在这里插入图片描述
第三组: java.lang.reflect.Method 类
在这里插入图片描述
第四组: java.lang.reflect.Constructor 类
在这里插入图片描述

通过反射创建对象

在这里插入图片描述

通过反射访问类中的成员

访问属性
在这里插入图片描述

访问方法

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

amant 柒少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值