博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java线程的一些基础小知识
阅读量:5352 次
发布时间:2019-06-15

本文共 1189 字,大约阅读时间需要 3 分钟。

--------------------------------------------------------------------------------------------------
线程的生命周期:
新建,就绪,执行,阻塞,消亡
通过 new 关键字,线程被创建, 进入新建状态;
线程调用start () 方法时,线程进入就绪状态, 意味着线程有权利获取cup的时间片,等待jvm调度;
当线程获取cup时,线程被执行,体现就是线程的run()方法被执行;
当线程的run() 方法没有执行完,却失去了cup时间片,此时线程进入阻塞状态,等待下次被调度;
当线程的run() 方法执行结算,线程死亡;

多线程并不能提高程序的执行效率,而是提高程序被cup加载的使用概率 , 多线程并不是并行执行;

--------------------------------------------------------------------------------------------------
多线程:指的是这个程序(一个进程)运行时产生了不止一个线程
并行与并发:
并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。
并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。并发往往在场景中有公用的
资源,那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QPS来反应这个系统的处理能力。
--------------------------------------------------------------------------------------------------
线程的调度与控制:
线程的调度模型分为: 分时调度模型和抢占式调度模型,Java使用抢占式调度模型
-
分时调度模型: 所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片
抢占式调度模型: 优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的CPU时间片相对多一些.
--------------------------------------------------------------------------------------------------
如何避免死锁:
将相同的资源,可能会产生死锁的资源打包成一组,放在一个公共的锁里面!
--------------------------------------------------------------------------------------------------

转载于:https://www.cnblogs.com/cx987514451/p/9543714.html

你可能感兴趣的文章
nginx gzip压缩
查看>>
【C#Windows 服务】 《三》Timer设置
查看>>
【转】JMeter基础之——一个简单的性能测试
查看>>
JVM-class文件完全解析-访问标志
查看>>
hdu 1002 A + B Problem II 高精度加法
查看>>
实训33 2018.05.10
查看>>
UVALive 6577 Binary Tree 二叉树的LRU串
查看>>
解决在eclipse中配置Tomcat时,出现"Cannot create a server using the selected type"的错误
查看>>
xDebug + webgrind 对 php 程序进行性能分析
查看>>
集合嵌套遍历的基本代码实现(针对存储于多个组中的元素)
查看>>
For macOS.百度网盘 破解SVIP、下载速度限制~
查看>>
IOS InHouse 发布流程
查看>>
BZOJ 4557 侦察守卫
查看>>
C99C新增内容
查看>>
<select>元素实现提示信息(类似于<input>元素的placeholder)
查看>>
基本数据类型(int, bool, str)
查看>>
python decorator模式
查看>>
python paramiko 远程下载
查看>>
C#如何安装Windows Service服务
查看>>
Entity Framework
查看>>