百知教育---Java基础学习重点归纳(2)

本文详细介绍了Java中实现多线程的两种方法:继承Thread类和实现Runnable接口,对比了sleep和wait方法的不同作用,阐述了提高线程并发效率的策略,包括使用Lock、读写锁、CopyOnWriteArrayList、CAS算法和减小锁粒度等。同时,分析了ArrayList与CopyOnWriteArrayList,以及HashMap与ConcurrentHashMap的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java基础学习重点归纳(2)—个人向

1.如何实现多线程

1.继承Thread类
	覆盖run方法
	创建线程对象
	启动线程,调用start方法
2.实现Runnable接口
	实现run方法
	创建目标对象
	创建线程对象,将目标对象作为实际参数
	启动线程,调用start方法

2.线程状态

在这里插入图片描述

3.sleep和wait方法的区别

1.sleep
	会让当前线程处于有限期等待状态,同时释放CPU,不释放拥有的锁标记
2.wait
	会让当前线程处于阻塞状态,同时释放CPU和锁标记

4.提高线程并发效率的策略

1.用Lock替换早起的synchronized,更灵活、直观,但必须手动释放锁
2.读写锁ReadWriteLock的应用,支持一读多写,从读操作提高并发效率
3.牺牲写操作效率,提高并发效率:CopyOnWriteArrayList,写操作时进行拷贝一个副本文,读操作时不加任何锁
4.利用无锁算法(简称CAS算法)提高并发效率:ConcurrentLinkedQueue
5.减小锁粒度提高并发效率:ConcurrentHashMap

5.ArrayList和CopyOnWriteArrayList的区别

ArrayList
	线程不安全,运行效率高
CopyOnWriteArrayList
	线程安全,在读操作远远大于写操作的场景下,运行效率相对比较高

6.HashMap和ConcurrentHashMap的区别

HashMap
	线程不安全,运行效率高,允许null作为键/值
ConcurrentHashMap
	线程安全,在全局操作不频繁的场景下,并发效率相对比较高,不允许null作为键/值

7.流分类

1.方向
	输出流:用以将<内存>中的内容写入到<存储设备>当中
	输入流:用以将<存储设备>中的内容读入到<内存>当中
2.单位
	字节流:以字节为单位,可以读写所有数据
	字符流:以字符为单位,可以读写文本数据
3.功能
	节点流:实际传输数据
	过滤流:强加节点流功能

8.文件拷贝

FileOutputStream f1 = new FileOutputStream("file/a_copy.txt");
FileInputStream f2 = new FileInputStream("file/a.txt");
while(true){
    int r = f2.read();
    if(r == -1) break;
    f1.write(r);
}
f2.close();
f1.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值