Map:
-
存储键值对形式的数据 key-value(K-V)
-
key是无序的,不可重复的-->set集合
-
value无序的,可重复的 -->Collection集合
-
一个key只能对应一个value(如果想要value对应多个值可以存储在容器中list)
-
存储多个数据的时候,如果key相同,value会覆盖
- 遍历:
-
keySet() 返回所有的key
-
values() 返回所有的值
-
entrySet() Set<Map.Entry<K,V>>
ollections 操作于容器的工具类
void sort(List) //对 List 容器内的元素排序,按照升序进行排序。
void shuffle(List) //对 List 容器内的元素进行随机排列
void reverse(List) //对 List 容器内的元素进行逆续排列
void fill(List, Object) //用一个特定的对象重写整个 List 容器
int binarySearch(List, Object)//采用折半查找的方法查找特定对象
如何处理HashMap的线程安全问题:
1.Hashtable
2.Collections.synchronizedMap(Map) 返回一个线程安全的map容器
3.juc包下java.util.concurrent 类 ConcurrentHashMap<K,V> 线程安全的容器HashMap容器类==>推荐使用:效率高
多线程:
-
多个任务同时执行就是多线程,如果不需要多任务,就不需要开启多线程
-
优点:资源利用率更好;程序设计在某些情况下更简单;程序响应更快
-
进程:对与操作系统而言就是不同的任务执行,每一个进行都有自己的代码和数据空间,进程之间切换消耗比较大,一个进程中包含一刀多个线程,是资源分配的最小单位
-
线程:一系列线程共享代码和数据空间,线程之间切换消耗较小,线程是cpu调度的最小单位
-
三高: 高可用(数据不会出错) 高性能(用户体验度好) 高并发(多用户同时操作抢购)
-
关注重点:
-
1.多线程的创建方式
-
1)继承Thread类 重写run()方法
-
2)实现Runnable接口,重写run()方法 --推荐
-
3)实现Callable