JAVA基础Day18

复习

  • 缓冲流:BufferedReader和BufferedWriter在读写的时候提供了缓冲区
  • 文件字节流:FileInputStream和FileOutputStream,以字节形式来读写文件
  • 转换流:InputStreamReader和OutputStreamWriter,在字节流和字符流之间进行转换的,在转换过程中,需要考虑编码的问题
  • RandomAccessFile:在操作文件的时候,会将文件看作是一个大型的字节数组,来对文件进行读写。在使用的时候需要指定模式:"r"、 "rw"、 "rws"、"rwd"
  • 枚举:适合于取值固定并且一一列举的场景

线程

  1. 进程:计算机在执行的任务

                  线程:进程中包含的小任务

  1. 在Windows中,一个进程中可以包含1到多个线程。在Linux中,一个进程一般只包含1个线程
  2. 线程的执行在CPU(中央处理器)核上来执行 - 现在的计算机中,CPU往往是多核的。每一个核不是只有1个线程,而是在执行多个线程。每一个核给线程划分时间片,进行时间片的轮询
  3. Java中,定义线程的方式有3种
    1. 定义一个类继承Thread类,需要覆盖其中的run方法,将线程要执行的逻辑覆盖到这个方法中
    2. 定义一个类实现Runnable接口,需要覆盖其中的run方法
    3. 定义一个类实现Callable接口(JDK1.5提供),需要覆盖其中的call方法 - 现阶段不要求掌握
  4. 一个核上的多个线程,是相互抢占的,抢占会发生在线程执行的每一个步骤中
  5. 因为多个线程之间相互抢占,导致出现了不合法/不合理的数据,这种现象称之为线程的并发安全问题
    1. 重复数字
    2. 缺失数字
    3. 负数
  6. 锁机制:通过synchronized来将代码括起来,称之为同步代码块
  7. 同步代码块在使用的过程中,需要指定锁对象 - 锁对象要求所有的线程都是"认识"的:共享资源、当前类的字节码对象、this
  8. 由于锁之间相互嵌套导致程序既不报错也不继续往下执行,这种现象称之为死锁 - 死锁一旦出现无法解决
  9. synchronized除了可以修饰同步代码块以外,还可以修饰方法,被synchronized修饰的方法称之为同步方法
    1. 如果synchronized修饰的是非静态方法,那么此时这个同步方法的锁对象是this
    2. 如果synchronized修饰的是静态方法,那么此时这个同步方法的锁对象是当前类的字节码对象
  10. 虽然synchronized可以修饰方法,但是尽量少使用
  11. 线程的等待唤醒机制:在线程中,可以通过等待唤醒机制来调节线程的执行顺序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值