一: 多线程的概念
1. 线程指进程中的一个执行场景,也就是执行流程。
* 每个进程都有一个应用程序 都有独立的内存空间。
* 同一个进程中的线程共享进程中的内存资源(共享的是堆内存和方法去内存)。
2. 进程
* 一个进程对应一个应用程序。 在java的开发环境下 启动JVM 就表示启动了一个进程。现在计算机都是支持多进程
3. 多进程的作用
* 是提高cpu的利用效率
4. 线程是一个进程中执行场景 可以启动多个线程。
5. 多线程的作用
* 多线程的作用是提高应用程序的使用率,线程和进程是共享“堆内存和方法区栈” 栈内存是独立的 一个线程一个栈
6. java程序运行的原理
* java命令会启动 java虚拟机 启动JVM 等于启动一个应用程序,表示启动了一个进程。该进程会自动的创建一个“主线程”然后主线程调用某个类的main方法。所以main方法运行在主线程中。
7. 线程的声明周期
* 新建 采用new语句创建完成
* 就绪 执行start开启线程
* 运行 占用cpu时间
* 阻塞 执行wait语句 执行sleep语句和等待某个对象锁 等待输入的场合
* 终止 退出run()方法
多线程不是为了提高执行速度 而是提高应用程序的使用效率。
8. 多线程的并发和并行
* 并行 多个cpu实例或者多台机器同时执行一段代码处理逻辑 是真正的同时。
* 并发 通过cpu调度算法,让用户看上去同时执行 实际上从spu操作层面不是真正的同时。并发场景中有公用的资源。
9.线程安全
* 并发情况下 该代码经过多线程使用 线程的调度顺序不影响任何结果。这个时候我们只需关注系统的内存
10. 同步
* java中的同步指的是人为的控制和调度 保证共享资源的多线程访问。
11. 线程的调度和控制
* 分时调度 所有的线程轮流使用cpu的使用权 平均分配每个线程占用cpu的时间片
* 抢占式调度 让优先级高的线程使用cpu 如果线程的优先级相同 那么会随机选择一个 优先级高的线程获取cpu时间相对多一点。
12. 多线程的实现方式
* 实现线程的方式有 继承Thread类 实现Runnable接口 这两种方式创建的线程在执行结束后没有返回值。
*