这周学习了线程同步,线程通信,包装类,集合

原理:同步方法的原理和同步代码块的底层原理其实是完全一样的,只是同步方法是把整个方法的代码都锁起来,同步方法其实底层也有锁对象的。

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流等。