美文网首页
对线程的理解

对线程的理解

作者: 30岁每天进步一点点 | 来源:发表于2019-01-11 18:08 被阅读0次

把自己当成一个线程,一出生就被编号0x0428,然后放到线程池。
我在线程池等待被调度去执行任务,比如接到用户登录的任务:
先去就绪车间等待被叫到车间(根据优先级)——车间执行(cpu)

(1)从包裹中取出参数(httprequest对象,userName、password参数)
(2)执行登录操作(把参数给数据库线程,因为需要等待,所以cpu会让我让出cpu的空间去等待)
我的数据处理完了被cpu调度,我需要再去就绪车间等待,等待被叫进cpu车间,完成登录
(3)构建登录成功的主页,处理html(这个过程比较慢,每个线程只能在cpu上运行一段时间,所以我一会儿就被叫就绪车间等待,直到完成)
然后回到线程池,等待下次被挑中执行任务,如果不回去,就会被垃圾回收
系统重启线程池、线程就会消失

cpu中有许多其他线程(硬盘、数据库、内存、网卡)比如: memecached线程、数据库连接的线程

必要的时候要对操作的数据加锁,执行完之后释放锁

也有死锁的发生,比如我锁定a的锁后需要再锁定b的锁,而另一个线程正好先锁定了b的锁,然后准备再锁定a的锁,这时我锁了a等b,他锁了b等a,就会发生死锁。
发生死锁后,操作系统会进行处理,kill掉一个线程,然后给出一个算法,比如按照一定的顺序加锁。

相关文章

网友评论

      本文标题:对线程的理解

      本文链接:https://www.haomeiwen.com/subject/oxffdqtx.html