java基础第十九天

一.IO流

1.File:文件和目录路径名的抽象表示形式

常用方法:

(1)createNewFile():创建一个文件(不是文件夹),如果指定的文件不存在并成功地创建,则返回true;如果指定的文件已经存在,则返回false

(重要)list():遍历所有目录下的文件,返回字符串数组

listFiles()

(重要)delete():删除指定的文件

getName():获取文件名称

(重要)mkDir():创建一个目录

(重要)mkDirs():创建联级目录

(重要)isDirectory():判断是否为目录

(重要)isFile():判断是否为文件

(重要)exists():判断是否存在

2.数据流(IO)

(1).输入流:用于读取数据源的数据

(2)输出流:用于把数据写入目的地.

流本质是字节序列的封装,有两种类型:

(1)字节流,是对二进制字节进行读写的对象。

主要用于读取图片,声音,视频,一般不用于文本的读取

(2)字符流,按一定编码格式以字符为单位进行操作。主要用于读取文本。

因此有4种基本的流:

(1)字节输入流,由InputStream(此抽象类是表示字节输入流的所有类的超类。)子类构建。

(2)字节输出流,由OutputStream(此抽象类是表示输出字节流的所有类的超类。)类构建,

(3)字符输入流,由Reader子类构建,

(4)字符输出流,由Writer子类构建。

3.字符流:

FileReader:字符输入流,read(),read(char[] chars),close()

BufferedReader:缓冲字符输入流,readLine(),close()

FileWriter:字符输出流,write(int c),write(Stringstr),flush(),close()

BufferedWriter缓冲字符输出流,write(),newLine(),flush(),close();

4.字节流:

FileInputStream:字节输入流

FileOutputStream:字节输出流

BufferedInputStream:缓冲字节输入流

BufferedOutputStream:缓冲字节输出流

URL:openStream(),获取字节输入流

5.对象流:


java基础第十九天_第1张图片


java基础第十九天_第2张图片

二.线程

1.进程和线程

(1)进程,是程序在计算机上的一次运行过程,进程是动态的。

(2)线程也是动态的,是比进程更小的概念,它是进程(程序运行过程)的一条执行路线。

(3)进程和线程的关系:


java基础第十九天_第3张图片

这副图是一个双向多车道的道路图,假如我们把整条道路看成是一个“进程”的话,那么图中由白色虚线分隔开来的各个车道就是进程中的各个“线程”了。

3.1这些线程(车道)共享了进程(道路)的公共资源(土地资源)。

3.2这些线程(车道)必须依赖于进程(道路),也就是说,线程不能脱离于进程而存在(就像离开了道路,车道也就没有意义了)。

3.3这些线程(车道)之间可以并发执行(各个车道你走你的,我走我的),也可以互相同步(某些车道在交通灯亮时禁止继续前行或转弯,必须等待其它车道的车辆通行完毕)。

3.4这些线程(车道)之间依靠代码逻辑(交通灯)来控制运行,一旦代码逻辑控制有误(死锁,多个线程同时竞争唯一资源),那么线程将陷入混乱,无序之中。

3.5这些线程(车道)之间谁先运行是未知的,只有在线程刚好被分配到CPU时间片(交通灯变化)的那一刻才能知道。

线程使用的场合:


java基础第十九天_第4张图片

2.创建线程有两种方式:

(1)继承Thread类:重写run()方法

(2)实现Runnable接口,实现该接口中的run()方法

启动线程调用start()方法,底层会调用run方法,线程所要执行的功能都在run方法中写

3.Thread类常用的方法:

(1)getPriority():获取线程的优先级,线程的优先级从低到高:1-10,值越大优先级越高,分配给该线程的cpu时间片段的几率就越高(执行该线程的机率就越大),创建好的线程默认优先级是5。

set Priority():设置线程的优先级

(2)getName():返回该线程的名称

setName():设置线程名称,不设置会默认设置名字

(3)getId():返回该线程的标识符,线程ID是惟一的,并终生不变。线程终止时,该线程ID可以被重新使用。

(4)setDaemon():设置守护线程(线程分为守护线程和非守护线程),特点:当只剩下守护线程时,守护线程会强制停止,因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了

(5)sleep():在指定的毫秒数内让当前正在执行的线程休眠

(6)yield():暂停当前正在执行的线程对象,并执行其他线程(主动让出cpu时间片段,让其他线程运行)

(7)join():等待该线程终止。

4.锁机制:synchronized

5.线程的生命周期:


java基础第十九天_第5张图片

你可能感兴趣的:(java基础第十九天)