Third Write

来源:互联网 发布:赛睿鼠标sensei淘宝 编辑:程序博客网 时间:2024/06/03 22:43

1.java 的输入/输出:

java的 I/O是通过java.io包下的类和接口支持,

其中最重要的是5个类,分别是

  File,OutputStream,InputStream, Write,Reader

 及一个接口Serializable.

File类:可以对文件进行操作

字节流:(OutputStream/InputStream),

可以使用字节流读取文件内容

字符流:(Writer/Reader)

转换流:(InputStreamReader/OutputStreamWriter)

将字节流转换为字符流

缓冲流:(BufferedReader),

读取缓冲区的内容

内存操作流:(ByteArrayInputStream/ByteArrayOutputStream),可以与内存的数据

时进行交互

打印流:

Scanner类:对输入的输入,还可以验证数据

合并流:(SequenceInputStream)

类可以将两个文件内容合并成一个文件

压缩流:对文件压缩操作

Serializable接口:对象序列化

输入字节流层次:

InputStream(父类):ByteArrayInputStream,FileInputStream,

StringBufferInputStream,SequenceInputStream,

ObjectInputStream,

FilterInputStream(BufferedInputStream,DataInputStream,LineNumberInputStream,PushbackInputStream) [子类]

 

输出字节流层次:

OutputStream(父类):ByteArrayOutputStream,

FileOutputStream,ObjectOutputStream,PipedOutputStream,

FilterOutputStream(BufferedOutputStream,DataOutputStream,PintStream) [子类]

 

输入字符流类的层次:

Reader(父类):BufferedReader(LineNumberReader),

CharArrayReader,FilterReader(PushbackReader),

InputStreamReader(FileReader), PipedReader,StringReader

 

输出字符流类的层次:

Writer(父类):BufferedWriter,CharArrayWriter,

FilterWrite,OutputStreamWrite(FileWriter),

PipedWriter,PrintWriter,StringWriter

2.JAVA多线程机制:

多线程:指的是这个程序(一个进程)运行时产生了不止一个线程

并行与并发:

并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。

并发:并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QPS来反应这个系统的处理能力。

线程状态:

*新建:当创建一个Thread类和他的子类对象后,新产生的线程对象总是处于新建状态,并获得除CPU外所需的资源。

*就绪:当新建状态的线程被启动后,将进入线程队列等待CPU资源。这时,他已经具备了运行的条件,一旦获得CPU资源,就可以脱离创建它的主线程独立运行了,另外,与拿来出于阻塞状态的线程结束阻塞状态后,也将进入就绪状态。

*运行:当一个就绪状态的线程获得CPU时,就进入了运行状态。每个Thread类,及其子类对象都有一个run()方法,一旦线程开始运行,就会自动运行该方法。在run()方法中定义了线程所有的操作。

*阻塞:一个正在运行的线程因为某种原因为某种特殊的情况,比如,某种资源无法满足,会让出CPU并暂时停止自身运行状态,进入阻塞状态。只有当引起阻塞的原因消除时,他才能从新进入就绪。

*死亡:不具备继续运行的能力的线程处于死亡状态。这一般是有两种情况引起的:一种是run()方法已经停止运行完毕了,另一种是由其他的线程(一般是主线程)强制终止它。

3.Thread:

JAVA中,两种方法可以创建线程:一种是继承Thread类;另外一中是实现Runnable接口。两种方法都要用到Thread类以及相关的方法。

*Thread() 构造一个线程对象

*Thread(Runnable target) 构造一个线程对象,target是被创建线程的目标对象,他实现了Runnable接口中的run()方法

*Thread(String name)用指定的字符串为名字构造一个线程对象。

4.线程的通信与协调

*互斥:当多个线程需要访问同一资源,而这一资源在某一时刻只允许一个线程访问,那么这些线程就是互斥的。

*同步:多个线程需要访问同一资源,而且需要相互配合才能正常工作。那么这些线程运行时就是一种同步关系。

*临界区:为了实现线程间的互斥和同步,需要将共享资源放入同一个区域一次只允许一个县城进入,该区域被称为临界资源。线程在访问共享资源前需要进行检查,看自己能否对该资源进行访问。如果有权访问,还需要阻止其他线程进入该区域。

*死锁:若有多个线程相互等待其他线程释放资源。且所有线程都不释放自己所占有的资源,从而导致相关线程处于永远等待的状态,这种现象被称为线程死锁。

 

 

原创粉丝点击