Java知识回顾之线程与IO

一、线程

  1. CPU内核数:CPU独立运行计算的核心数量,例如 intel i5-10400有6个 内核,经因特尔的超线程技术,可以实现12个线程,具体可查看设备管理器CPU设备的数量

  2. 线程:操作系统运行的程序代码,多个线程可以并行运行,是操作系统CPU执行命令的具体操作

  3. 进程:操作系统分配的一片内存资源,一个应用程序就被分配一个进程,然后CPU根据线程来对内存资源和各种外设进行操作。一个进程可以有多个线程,但是它们并不是包含关系,而是不同的东西。

  4. Java实现多线程:

    • 继承Thread:构造一个线程类,继承Thread,并重写run方法。通过该 线程类的对象的start(开启线程)或run(单纯调用方法)方法来执行线程。
    • 实现Runnable:构造线程类实现Runnable,并重写run方法。把该对象放入Thread对象构造器来创建线程对象,并.start开启线程。
    • 实现Callable:实现Callable并重写run方法。把该对象传入FutureTask对象,再把FutureTask对象传入Thread,.start开启线程。值得注意的是,Callable提供了返回值,构造Callable时必须给一个泛型,即为返回值的类型。
    • 线程池:略
  5. start与run的区别:start的开启线程,在另一个线程里面执行线程里的run方法,而run只是在当前线程执行一个对象里面的方法而已。

  6. CyclicBarrier 和CountDownLatch的区别:两者都是线程计数器,拥有让线程组中的线程等待其它线程执行完才继续执行的效果,但是CyclicBarrier可以重复使用,而CountDownLatch是一次性的。

  7. sleep与wait的区别:sleep是占着线程睡觉,就像单片机程序里的延时函数,卡在那里延时;而wait是让线程进入等待状态,直到被其它线程唤醒,上面的CyclicBarrier和CountDownLatch就是计数到了就唤醒wait的线程。

  8. CPU高速缓存:CPU本身有缓存区,某些变量会被缓存入该区域内,使用的时候会直接读取,而不会读取变量在内存中的值,这在多线程的使用下,可能导致A线程写变量x为值newValue,而B线程读取变量x的值却为oldValue的情况。

  9. volatile:该关键字用于修饰类成员,保证其读取内存中的值并且不缓存它,确保了线程读取到的变量值与内存中一致。

  10. 如何确保线程按想要的顺序执行:使用join,例如有个线程thread1,在主线程main里面,如果使用thread1.join(),则主线程就卡死在这里,直到thread1执行完死了。

  11. yield():暂停某线程,thread1.yield(),让其放弃CPU使用权,但是也可能它放弃了又马上获得了使用权。

二、IO

  1. File:文件类,定义文件对象,包含方法:
    • exist:检查文件是否存在
    • isDerectory:检查是否是目录
    • mkdir:创建文件夹
    • createNewFile:创建新文件
  2. FileInputStream:有参构造,参数为File。从文件读取数据,字节流,即对byte类型的数据进行操作(unicode)
  3. FileOutputStream:参数为File。写数据进文件,字节流
  4. FileWritter:参数为File,构造完以后给BufferedWritter使用。
  5. FileReader:参数为File,构造完以后给BufferedReader使用。
  6. ObjectInputStream:以FileInputStream为参数构造,进行对象的输入,反序列化
  7. ObjectOutputStream:以FileInputStream为参数构造,对象的输出,序列化。序列化操作输出的东西人类是看不懂的,只有计算机看得懂。就是一个数据持久化的操作。
  8. BufferedWritter:以FileWritter为参数。字符流,可以直接写String类型的字符串进文件里。
  9. BufferedReader:以FileReader为参数。字符流,读取中文时不会像FileOutputStream那样乱码
  10. IO流可按照三种方式进行分类
    • 按方向:输出流、输入流
    • 按传输大小:字符流、字节流
    • 按功能:节点流、处理流
  11. File是一个文件类,节点流的使用需要传入File类对象;而处理流的使用又需要传入节点流对象;就是一层套一层的。所以说FileWritter为节点流、BufferedWritter为处理流,它也叫处理流中的缓冲流。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值