这周学习了线程同步,线程通信,包装类,集合
原理:同步方法的原理和同步代码块的底层原理其实是完全一样的,只是同步方法是把整个方法的代码都锁起来,同步方法其实底层也有锁对象的。
Lock锁也称同步锁,加锁与释放锁方法化了,如下
1.public void lock()
: 加同步锁
2.public void unlock()
: 释放同步锁
// 创建一把锁对象
private final Lock lock = new ReentrantLock();
// 上锁
lock.lock();
// 解锁
lock.unlock();
线程通信的方法
public void wait(): 让当前线程进入到等待状态,此方法必须锁对象调用
public void notify():唤醒当前锁对象上等待状态的某个线程,此方法必须锁对象调用
public void notifyAll():唤醒当前锁对象上等待状态的全部线程,此方法必须锁对象调用
包装类
1.Java 认为一切皆对象,引入数据类型就是对象了
2.但是在Java 中 8 种 基本数据类型不是对象,只是表示一种数据的类型形式
3.Java 为了一切皆对象的思想统一,把8种基本类型转换成对应的类,这个类称为基本数据类型的包装类
集合是一个大小可变的容器,容器中的每个数据称为一个元素。 数据 == 元素
集合与数组的区别
1.集合中类型可以不确定,大小可以不固定
2.数组中类型和长度一旦定义出来就都固定了
public boolean add(E e): 把给定的元素添加到当前集合中
public void clear(): 清空集合中所有的元素
public boolean remove(E e): 把给定的对象在当前集合中删除
public boolean contains(Object obj): 判断当前集合中是否包含给定的对象
public boolean isEmpty(): 判断当前集合是否为空
public int size(): 返回集合中元素的个数
public Object[] toArray(): 把集合中的元素,储存到数组中
迭代器遍历集合的方法
public Iterator iterator()
: 获取集合对应的迭代器,用来遍历集合中的元素的
E next()
: 获取下一个元素值
boolean hasNext()
: 判断是否有下一个元素,有返回true,反之
set集合
HashSet
:添加的元素是无序,不重复,无索引的
LinkedHashSet
: 添加的元素是有序,不重复,无索引的
TreeSet
: 不重复,无索引,按照大小默认升序排列
这周学习的知识中集合的东西是最多最难的,下周将继续学习集合剩余的知识,以及stream流等。