13Java进阶——IO、线程 (2)

InputStream:in

3.1.标准输入流(字节流)    public static void main(String[] args) throws IOException {
       //字节流
       InputStream is = System.in;// 字节输入流的数据来源来自标准输入设备键盘
       BufferedReader br = new BufferedReader(new InputStreamReader(isr));
       System.out.println("请输入一个整数:");
       int i= Integer.parseInt(br.readLine());
       System.out.println("您输入的整数为:"+(i + 1));
       //以上代码就是自己实现了键盘录入字符串和整数的方法   这样写起来有点麻烦,因此Java提供了
       Scanner sc = new Scanner(System.in);
  }
3.2. 标准输出流

PrintStream ps = System.out;

4 打印流

打印流分为:

字节 打印流 PrintStream

字符打印流 PrintWtriter

打印流的特点:

只负责数据的输出 不能读取数据

有一些特有的方法 println() print()

5 对象的序列化流

对象序列化: 就是将对象保存到磁盘或者在网络中传输对象 为了对象保存的正确性 和传输的安全性,需要对对象进行编码处理,那么把这种处理方式称为对象的序列化

反序列化:将序列化的对象解析为原对象的过程 就称为反序列化

ObjectOutputStream oos.writeObject(obj);

ObjectInputStream ois.readObject();再强制转型

对于对象传输 对象必须实现java.io.Serializable接口

6 Porperties

Porperties是Map集合的一个实现类

Properties prop = new Properties(); prop.put(k,v); prop.entrySet();

Porperties可以保存到流中或者从流中加载。 属性列表中的键及其对应的值都是字符串

prop.getProperty(k) prop.setProperty(k,v)

prop.load(输入字节流/reader) prop().store(输出字节流/writer,注解默认为null)

7 多线程 7.1 进程 线程 程序

程序: 是为了完成特定任务 用某种语言编写的一组指令的集合。指的一段静态。

进程:是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程:有他自身的产生 存在 以及消亡的过程--生命周期

程序是静态的 进程是动态的进程作为资源分配单位,系统在运行时会为每个进程分配不同的内存区域。

线程(thread) 进程进一步细化就是线程,是一个程序内部的一条执行路径。

若一个进程同一时间并行执行多个线程,就是支持多线程。

线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程的切换开销比较小。

一个进程中的多个线程共享相同的内存单元和内存地址空间,他们从一个堆中分配对象,可以访问相同的变量和对象。这就是的线程间的通信变得简便和高效。但多个线程操作共享的系统资源可能会带来安全隐患。

单核CPU和多核CPU

在java中 一个程序至少有三个线程组成, 主线程(main) 垃圾回收线程(gc) 异常处理线程。

并行和并发:

并行:多个CPU同时执行多个任务

并发: 一个CPU在同一时刻,同时处理多个任务。

使用多线程的优点:

1 提高了应用程序的响应。

2 提高了计算机CPU的利用率

3 改善程序结构。

何时需要多线程?

程序需要同时执行两个或多个任务

程序需要实现一些需要等待的任务的时候:如:用户输入,文件读写 网络操作等。

需要一些后台运行的程序时

7.2 实现多线程

创建一个新的执行线程有两种方法。

一个是将一个类声明为Thread的子类。 这个子类应该重写Thread的run方法 。 然后可以分配并启动子类的实例

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjzwz.html