java字节流字符流线程

字节输出流:
FileOutputStream
写入数据:write()
字节输入流:
FileInputStream
读取数据:read()
============================================
1、字符输入输出流:
1)字符输出流:FileWriter
2)字符输入流:FileReader

2、练习:
通过字符输入输出流进行文件的复制.

3、缓冲流:(高级流)
BufferedOutputStream 字节缓冲输出流
BufferedInputStream 字节缓冲输入流
缓冲流作用:
提高读取和写入数据的效率.

使用步骤:
    1)创建缓冲流对象
    例如:
        字节缓冲输入流对象 对象名 = new 字节缓冲输入流(字节输入流对象);
        字节缓冲输出流对象 对象名 = new 字节缓冲输出流(字节输出流对象);
    2)读取或者写入数据:
            读取数据:通过字节缓冲输入流对象名.read();
            写入数据:通过字节缓冲输出流对象名.writer();
    3)释放资源
    
    练习:
        分别测试低级流文件复制和高级流文件复制的时间.
        要求:
            低级流: FileOutputStream    FileIutputStream
            高级流: BufferedOutputStream   BufferedIutputStream
    
    字符缓冲流:
        BufferedReader      字符缓冲输入流
        BufferedWriter          字符缓冲输出流
    
    创建字符高级流对象:
        BufferedReader br = new BufferedReader(new FileReader("文件路径"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("文件路径"));

4、多线程:
并行:指两个或者多个事件在同一时刻发生.(同时发生)
并发:指两个或者多个事件在同一时间段内发生的.

        进程:是指一个在内存中运行的应用程序.是一个独立的单元,一个进程中至少有一个线程.
        线程:是指执行进程中任务功能.
        
        实现多线程两种方式:
        1)继承Thread类
            使用步骤:
                    a.自定义一个类型去继承Thread
                    B.手动添加run()方法,进行重写   (run方法的作用就是写线程功能代码的)
                    c.创建自定义线程类对象,然后开启线程
                    
                    例如:
                            class 类名 extends Thread{
                                public void run(){
                                    功能代码;
                                }
                            }
                            自定义类名 对象名 = new 自定义类名()
                            对象名.start().
                            
            2)实现Runnable接口
                使用步骤:
                        a.自定义实现类去实现Runnable接口
                        b.重写run方法
                        c.需要通过创建线程类的有参构造,把Runnable接口的实现类对象传进去.
                        d.开启线程.
                    例如:
                            class 实现类名 implements Runnable{
                                public void run(){
                                    功能代码;
                                }
                            }
                            
                            new Thread(实现类对象).start();
                3)匿名内部类实现多线程的方式:
                    例如:
                    Runnable r=new Runnable(){
                        public void run(){
                                    功能代码;
                                }
                    };
                    new Thread(r).start();
                

5、通过同步代码块解决线程安全问题:
同步代码块固定语法:
synchronized(同步锁对象){
需要同步操作的方法
}
注意:
1)对象的同步锁只是一个概念,可以理解为在对象上标记了一个锁.
2)同步锁可以是任意类型.
3)多个线程对象,要使用同一把锁.

转载于:https://www.cnblogs.com/Pythons/p/10932285.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值