【寒假实习备战day13】操作系统线程状态的学习

简单的自我介绍

  • 我是一名双非大二学生,目前学习方向为Java后端,快速学习并学到了springboot,并和实验室的朋友做了一个简单的微信小程序,想在寒假找份有关互联网的实习,打算海投,城市和公司暂时没有特别强烈的意向,我会再次牢固的复习一遍Java整套学习知识,并且开始补充算法知识刷算法题,来备战这次寒假实习,并且想报名参加蓝桥杯Java B组的比赛,希望我的一些学习笔记能为你带来一些帮助,这次给大家带来的操作系统的学习。
  • 排序的算法基本学完了,最近对实习有了更准确的了解,甚至晚上做梦都梦到拿到了一个美团日常实习的offer哈哈哈哈。首先投递时间在11月中旬,不早不晚。其次是也会对计算机网络和操作系统有些八股文的面试,所以我已经开始着手学习这方面的知识了,尤其是多线程这块,当初Java学的时候没学太明白,这次就要结合Java多线程和操作系统一起更深入的学习了,这里给大家推荐操作系统也是我跟着学的网课是B站的哈工大操作系统,非常nice,看了不少了,感觉很棒!还有一个月的时间,时间紧任务重,好好加油吧,哪怕最后结果最糟糕也是没有实习offer,但我相信这个过程中,一定能找到自己不足的地方,明确自己学习进度的定位,也是一种帮助!

线程的状态有几种

Java中的线程的生命周期大体可分为6种状态。

1.NEW-新建(新创建的线程对象就是NEW,不是可运行状态 不会让cpu处理)

2.RUNNABLE-可运行(新创建的线程对象start后才会变成可运行状态,cpu处理)

4.BLOCKED-阻塞(当线程争抢锁失败后变为阻塞状态,获取锁成功后又从阻塞状态变为可运行运行状态)

5.WAITING-等待(如果争抢锁成功 但是当前线程不满足某些条件 调用wait方法 暂时释放锁 当前线程进入wait状态,在条件满足时 由其他线程调用notify方法 唤醒等待线程 然后再去争抢锁 如果成功则进入可运行状态,如果不成功进入阻塞状态)

6.TIMED_WAITING-等待(有时限)(设置一个时间,如果等待的时间到了会自己唤醒 或者 在时间之内被notify唤醒),补充这种等待可以通过sleep(time)进行转换 不需要和锁有关系,就是sleep后进入TIMED_WAITING状态 时间到了恢复,TERMINATED-终结(线程走到尽头,释放线程)

(一). 等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。
(二). 同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
(三). 其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。

线程和等待的关系

假如新建有多个线程并start后 进入可运行状态 但是有一个部分需要线程同步,此时多个线程争抢一把锁,假如线程1争抢成功,那么其它线程进入阻塞状态,线程1如果不满足某些条件则进入等待状态 释放锁,现在其它线程开始争抢锁,如果线程2争抢成功 那么除线程1线程2之外其它的线程陷入阻塞状态 线程2完成了线程1的某些条件 线程2完成自己的任务释放锁,现在除线程1之外的所有线程再来争抢这把锁,现在线程3争抢成功 并且完成了线程1所需要的所有条件 现在唤醒线程1 线程3完成自己的任务释放锁,现在因为线程1被唤醒时线程3还没有释放锁 所以 线程1由等待状态变成了阻塞状态 然后线程3释放锁,所以现在 所有的线程(包括线程1)开始争抢锁。

#后面的秋招会越来越卷吗##Java工程师##实习##双非#
全部评论
感觉我投早了,拿了offer还不知道导员让不让去
4 回复 分享
发布于 2022-10-27 08:44 辽宁
太强了,加油啊!
1 回复 分享
发布于 2022-11-04 17:28 河南
郑州实习挺难找的 都是外包
1 回复 分享
发布于 2022-11-01 16:40 河南
现在情况如何
点赞 回复 分享
发布于 2022-12-13 17:22 陕西
楼主之前有拿过java实习吗
点赞 回复 分享
发布于 2022-11-16 01:58 广东

相关推荐

12-20 11:21
复旦大学 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务