038、缓冲流,转换流,序列化流,打印流
缓冲流,转换流,序列化流,打印流 1.缓冲流 上一篇IO中只是介绍了一些基本的流,作为IO流的入门,这一篇介绍一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。 1.1 概述 缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,…
2024-3-07 8:56
|
|
16
3803 字
|
49 分钟
037、IO
IO 1.IO概述 1.1 什么是IO 生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。 我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入…
2024-3-07 8:56
|
|
16
4414 字
|
1 小时
036、File类和递归
File类和递归 File类 1.概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 2.构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 public File(String parent, String child) :从父路径名字符串和子路径名字符…
2024-3-07 8:56
|
|
17
1819 字
|
37 分钟
035、JDK8新特性
JDK8新特性 1.Lambda表达式 1.1 函数式编程思想概述 在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。 面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情. 函数式编程思想: 只…
2024-3-07 8:56
|
|
15
12894 字
|
2.4 小时
034、线程池和死锁
线程池和死锁 1.线程池 1.1 线程池的思想 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间,线程也属于宝贵的系统资源。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?…
2024-3-07 8:55
|
|
15
1236 字
|
17 分钟
033、并发包
并发包 1.ConcurrentHashMap 为什么要使用ConcurrentHashMap: HashMap线程不安全,会导致数据错乱 使用线程安全的Hashtable效率低下 基于以上两个原因,便有了ConcurrentHashMap的登场机会。 HashMap线程不安全演示 公有、静态的集合: public class Const { public static HashMap<St…
2024-3-07 8:55
|
|
21
2179 字
|
39 分钟
032、原子性
原子性 1.看程序说结果 public class VolatileAtomicThread implements Runnable { // 定义一个int类型的遍历 private int count = 0 ; @Override public void run() { // 对该变量进行++操作,100次 for(int x = 0 ; x < 100 ; x++) { count+…
2024-3-07 8:55
|
|
13
1654 字
|
14 分钟
031、volatile关键字
volatile关键字 1.看程序说结果 public class VolatileThread extends Thread { // 定义成员变量 private boolean flag = false ; public boolean isFlag() { return flag;} @Override public void run() { try { Thread.sleep(1000…
2024-3-07 8:55
|
|
15
1037 字
|
9 分钟
030、线程状态
线程状态 1.线程状态概述 线程由生到死的完整过程: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,有几种状态呢?在API中java.lang.Thread.State这个枚举中给出了六种线程状态: 这里先列出各个线程状态发生的条件,下面将会对每种状态进行详细解析 线程状态 导致状态发生条件 NEW(新建) 线程刚被创建,但是并未启动。还没调用…
2024-3-07 8:54
|
|
17
2037 字
|
25 分钟
029、线程安全
线程安全 1.线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 我们通过一个案例,演示线程的安全问题: 电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是 “葫芦娃大战奥特曼”,本次电影的座位共100个(本场电影只能卖100张票)。 我们来模拟电影院的售票窗口,实现多个窗…
2024-3-07 8:54
|
|
16
1215 字
|
18 分钟