同步的方式有两种:同步方法和同步块。
同步方法:
public synchronized void test(){}
表示两个或者两以上的线程不能同时访问该方法
同步块:
public void test(){
synchronized(one){
}
}
同步块在访问方法的内部,表示两个或两个以上的线程不能同时访问同步块中的对象。
wait和sleep的区别:
1.sleep方法在线程类Thread中定义,wait方法在Object中定义
2.wait方法只能放在同步方法或同步块中,表示在当前线程对资源进行等待。sleep方法可以放在任何位置,表示当前线程休眠。
3.wait方法要释放对象锁,sleep方法不会释放对象锁。
4.wait方法使用后,线程需要notify唤醒后才能继续执行。而sleep在休眠结束后,线程自动继续执行。
集合的由来:
集合特点:元素类型可以不同,集合长度可变、空间不固定。
java中对一些数据结构和算法进行了封装即集合。集合也是一种对象,用于储存。检索。操作。传输对象。
JCF(java Collextions Framework)集合框架。它提供了用管理集合的接口和类。
集合框架:
1.接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。
2.实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。
3.算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现
集合框架IPA:Collection接口,Map接口
Collection 接口:包含了List接口/Set
List:线性(存放元素顺序和取出顺序一致),元素可以重复
Set:元素不可以重复
Map:键值对,一个元素可以存放两个对象,键不能重复
List又包含了:ArrayList、
集合与数组的区别:
1.集合长度可以变化,数组创建后,长度不可变化。
2.集合中只能存放对象的引用,而数组可以是基本类型数组,也可以是引用类型数组
3.集合中封装了大量的算法,而数组中封装的算法稀少。所以使用集合更方便。