Java 多线程
来源:互联网 发布:象棋软件开局库 编辑:程序博客网 时间:2024/06/07 01:10
线程是一个进程中的执行场景。一个进程可以启动多个线程。
进程和进程之间的内存是独立的。
一个进程中的线程共享其进程中的内存和资源,共享的内存是堆内存和方法区内存,栈内存不共享,每个线程有自己的。
线程的调度与控制
通常我们的计算机只有一个CPU,CPU在某一个时刻只能执行一条指令,线程只有得到 CPU时间片,也就是使用权,才可以执行指令。在单 CPU的机器上线程不是并行运行的,只有在多个CPU上线程才可以并行运行。 Java虚拟机要负责线程的调度,取得CPU的使用权,目前有两种调度模型:分时调度模型和抢占式调度模型, Java使用抢占式调度模型。
分时调度模型:所有线程轮流使用CPU的使用权,平均分配每个线程占用 CPU的时间片。
抢占式调度模型:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个, 优先级高的线程获取的CPU时间片相对多一些。
线程优先级
线程优先级主要分三种: MAX_PRIORITY(最高级 ),MIN_PRIORITY(最低级),NORM_PRIORITY(标准)默认
线程状态
线程状态分七种: born(新生状态 ),runnable(就绪状态),running(运行状态),waiting(等待状态),sleeping(睡眠状态),blocked(阻塞状态),dead(死亡状态)。线程状态和状态之间的转换如下图:
线程同步,锁机制
如果有线程t1和t2,t1和t2同时运行,两个线程间谁也不等谁,这是异步编程模型。
如果有线程t1和t2,t1和t2线程运行,当t1线程必须等t2线程执行完成之后,t1线程才能执行,这是同步编程模型。
什么时候要同步呢?为什么要引入线程同步?
1、为了数据安全,尽管应用程序的效率降低,但为了保证数据安全,必须加入线程同步机制。线程同步机制是程序变成了(等同)单线程。
2、什么条件下要使用线程同步:
第一、必须是多线程环境。
第二、多线程环境共享一个数据。
第三、共享的数据涉及到修改操作。
线程优先级主要分三种: MAX_PRIORITY(最高级 ),MIN_PRIORITY(最低级),NORM_PRIORITY(标准)默认
- 【Java多线程】多线程死锁
- Java 多线程
- java 多线程
- java多线程
- JAVA多线程
- java多线程
- JAVA多线程
- java多线程
- JAVA 多线程
- Java多线程
- java多线程
- JAVA 多线程
- Java 多线程
- Java 多线程
- java多线程
- Java 多线程
- Java多线程
- java 多线程
- JavaScript中数据类型转换
- 利用Node.js与PDFKIT 生成PDF文件
- JavaScript之闭包
- springboot自学笔记
- OSCtxSw()
- Java 多线程
- ionic3/ag4编写模仿京东商城的demo
- Tensorflow教程-MNIST 数据下载
- vue安装
- NoSql
- iOS 自己封装的SDK 打包与合并,新手教程!!!
- 微信公众号开发中的用户账号绑定
- Java中有关volatile的几个小面试题
- npm 安装使用以及详细介绍