多线程
目录:
1.Map
2.Collections
3.多线程
1.Map
1.Map接口
HashMap 可以说是 Java 中最常用的集合类框架之一,是 Java 语言中非常典型的数据结 构,我们总会在不经意间用到它,很大程度上方便了我们日常开发。实现 Map 接口的类用 来存储键(key)-值(value) 对,Map 类中存储的键-值对通过键来标识,所以键值不能重复。
2.Map的实现类
Map 接口的实现类有 HashMap 和 TreeMap 等。
HashMap: 线程不安全,效率高. 允许 key 或 value 为 null
HashTable:线程安全,效率低. 不允许 key 或 value 为 null
Properties: Hashtable 的子类,key 和 value 都是 string
2.Collections
第一节Collections 工具类
类 java.util.Collections 提供了对容器操作的工具方法,与 Arrays 使用差不多。
void sort(List) //对 List 容器内的元素排序,按照升序进行排序。
void shuffle(List) //对 List 容器内的元素进行随机排列
void reverse(List) //对 List 容器内的元素进行逆续排列
void fill(List, Object) //用一个特定的对象重写整个 List 容器
int binarySearch(List, Object)//采用折半查找的方法查找特定对象
3.多线程
1.线程概念
多线程,说白了就是多条执行路径,原来是一条路径,就主路径(main),现在是多 条路径。就相当于高速路。
2.程序、进程与多线程
程序是指令的集合,代码的集合;而进程是动态的概念,当程序在执行时,系统分配进 程;多线程是在同一进程下,充分利用资源 ,多条执行路径,共享资源 (cpu data code)
3.多线程优缺点
1)、优点
资源利用率更好;程序设计在某些情况下更简单;程序响应更快
2)、缺点
a)设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般 都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往 往非常复杂。不正确的线程同步产 生的错误非常难以被发现,并且重现以修复。
b)上下文切换的开销 当 CPU 从执行一个线程切换到执行另外一个线程的时候,它需要 先存储当前线程的本地的数据,程序 指针等,然后载入另一个线程的本地数据,程序指针 等,最后才开始执行。这种切换称为“上下文切 换”(“context switch”)。CPU 会在一 个上下文中执行一个线程,然后切换到另外一个上下文中执 行另外一个线程。上下文切换 并不廉价。如果没有必要,应该减少上下文切换的发生。
1、创建 Thread 的子类
创建: 继承 Thread +重写 run
启动: 创建子类对象 对象.start()
2、实现 Runnable 接口(推荐)
面向接口编程,避免单继承局限
创建: 实现 Runnable +重写 run 启动:静态代理 Thread
a)、创建真实角色 实现类对象
b)、创建代理角色 Thread 对象+真实角色的引用
c)、代理角色.start()