4.12~4.13总结

IO流

IO流:用于读写文件中的数据(可以读写文件,或网络中的数据...);

File:表示系统中的文件或者文件夹的路径;

  • 注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据;

 I:input:读;

O:output:写;

:像流水一样传输数据;

IO流按照流向可以分为:

输入流:读取

输出流:写出

 IO流按照操作文件的类型可以分为:

字节流:可以操作所有类型的文件

字符流:只能操作纯文本文件

 / / 纯文本文件:windows自带的记事本打开能读懂;

字节流

OutputStream

OutputStream是一个抽象类,由很多子类,下面我们将学习它的FileOutputStream和FileInputStream

FileOutputStream

操作本地文件的字节输出流,可以把程序中的数据写到本地文件中。

书写步骤:

  1. 创建字节输出流对象
  2. 写数据
  3. 释放资源

 FileOutputStream写数据的3种方式 

1.FileOutputStream的作用

        可以把程序种的数据写到本地文件上面,是字节流的基础

2.书写步骤

        创建对象,写出数据,释放资源

3.散步操作的细节

        创建对象:文件存在,文件不存在,追加写入

        写出数据:写出整数,写出字节数组,换行写

        释放资源:关闭通道

FileInputStream

操作本地文件的字节输入流,可以把本地文件中的数据读到程序中来

书写步骤

  1. 创建字节输入流对象
  2. 读数据
  3. 释放资源

 

 

 FileInputStream书写细节
1.创建字节输入对象;

        细节1:如果文件不存在,就直接报错

2.读取数据

        细节1:一次读取一个字节,读出来的是数据在ASCII上对应的数字;

        细节2:读到文件末尾了,read方法返回-1;

循环读取

 

 

拷贝文件

 

 我们这里发现如果拷贝的视频大小比较大的话运行的时间很久,那是因为FileInputStream一次只读写一个字节

FileInputStream一次读多个字节

缓冲流

 转换流

 序列化流和反序列化流

 字节打印流

 b 

多线程

  • 说起进程,就不得不说下程序,程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。
  • 进程是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位
  • 通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的单位。

 注意:很多个线程是模拟出来的,真正的多线程指的是有多个CPU,即多核,如服务器。如果是模拟出来的多线程,即在一个CPU的情况下,在同一个时间点,CPU只能执行一个代码,因为切换的很快,所有就有同时执行的错觉;

1.线程的创建

有三种创建方式:

 

1.继承Thread类

重写run方法,run方法里面就是该线程要执行的方法

调用该线程时要调用start方法,不能直接调用run方法

2.实现Runnable接口的方式进行实现

 

 小细节:在MyRun类中不能直接调用getName方法,要使用Thread类的currentThread静态方法来得到当前的对象,再调用getName方法获得线程名;

3.实现Callable接口

 

最后使用git方法获得线程运行的结果

 多线程中的常用成员方法

 细节:如果没有给线程设置名字,他们是有默认的名字的

格式:Thread-X   X是数字从0开始;

 

static Thread currentThread()        获取当前线程的对象;

细节:

        当JVM虚拟机启动后,会自动的启动多条线程

        其中有一条线程叫做main线程

        他的作用就是去调用main方法,并执行里面的代码

        在以前,我们写的所有的代码,其实都是运行在main线程里面的

 

static void sleep(long time)           让线程休息指定的时间,单位为毫秒

细节:

        1.哪条线程执行到这个方法,那么哪条线程就会在这里停留对应的时间

        2.方法的参数:就表示睡眠的时间,单位毫秒

                1 秒 = 1000 毫秒

        3.当时间到了之后,线程就会自动的醒来,继续执行下面的其他代码

 

final void setDaemon(boolean on)           设置为守护线程

细节:

        当其他的非守护线程执行完毕后,守护线程会陆续结束

通俗易懂:

        当女神线程结束了,那么备胎也没有存在的必要了;

重点:

在聊天室里面,当你在实现传输文件的时候,要将传输文件的线程设置为守护线程,因为当你在传输文件的时候将聊天室关闭了,那么文件传输也就没有继续进行下去的必要了;

 同步代码块

把操作共享数据的代码锁起来

格式 :

        synchronized (锁){

                操作共享数据的代码;

        }

特点1:锁是默认打开的,有一个线程进去了,锁自动关闭

 同步方法

        就是把synchronized关键字加到方法上面

格式:

        修饰符 synchronized 返回值类型 方法名(方法参数){

                ..........;

        }

 

Java中线程的其中状态:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值