当前位置: 首页 > news >正文

有名的网站制作公司技术博客 wordpress

有名的网站制作公司,技术博客 wordpress,怎么能自己做网站,pk10网站开发多线程技术是我们后端工程师在面试的时候必问的一个知识点,今天就来盘点一下多线程的相关知识, 先来说下进程,线程及线程的生命周期: 进程:进程就是正在进行中的程序,是没有生命的实体,只有在运…

多线程技术是我们后端工程师在面试的时候必问的一个知识点,今天就来盘点一下多线程的相关知识,

先来说下进程,线程及线程的生命周期:
进程:进程就是正在进行中的程序,是没有生命的实体,只有在运行时处理器才会赋予它生命,才能成为一个活动的实体,我们称之为“进程”。
每一个进程都有一个独一无二的编号,被成为进程编号,简称PID( Process identifier),PID是一串数字,取值为 1-32768。 每个进程有独立的地址空间和资源,相互之间不会直接影响。

线程:线程是进程中的执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,可以与同属同一个进程的其他线程共享进程所拥有的全部资源。虽然线程共享资源,但每个线程有自己的栈空间和程序计数器,独立运行,进程之间可以并发执行。

进程和线程的关系:一个进程可以包含多个线程,线程是进程的一部分。打个比方:把领导分配的一个开发任务比作一个进程,参与这个开发任务的开发人员就是线程,如果多个开发人员一起开发,就属于多个线程并发执行。如果只有一个开发人员开发,那就是单线程执行

下面详细说一下线程,因为面试的时候线程相关知识被问到的概率还是很大的。

1、线程生命周期的几种状态:
线程的生命周期指的是线程从创建到销毁的整过过程,通常情况下线程的生命周期有以下5种状态:

  • 初始状态
  • 可运行状态
  • 运行状态
  • 休眠状态
  • 终止状态

这5种状态转化图如下:
在这里插入图片描述

通用的状态有以上五中,但是看Thread.State 源码会发现, Java 线程的生命周期和上面说的生命周期是不同的,代码里有以下状态:
在这里插入图片描述
(1)NEW:初始化状态
(2)RUNNABLE:可运行状态(就绪状态)
(3)BLOCKED:阻塞状态
(4)WAITING:无限时等待状态
(5)TIMED_WAITING:有时限等待状态
(6)TERMINATED:终止状态

分别解释下这6中状态(不想看太多文字的可直接看最后的图片总结):

(1)New-初始化状态:表示线程被创建但是尚未启动的状态, new Thread() 新建一个线程,但是如果线程没有开始运行start()方法,所以也没有开始执行run()方法中的代码,那么它此时的状态就是初始化状态。

(2)Runable-可运行状态: Java 中的 Runable 状态对应操作系统线程状态中的两种状态,分别是 Running 和 Ready。到了这个状态下一步要么等着执行,要么直接执行。
也就是说,Java 中处于 Runnable 状态的线程有可能正在执行,也有可能没有正在执行,正在等待被分配 CPU 资源。
所以,如果一个正在运行的线程是 Runnable 状态,当它运行到任务的一半时,执行该线程的 CPU 被调度去做其他事情,导致该线程暂时不运行,它的状态依然不变,还是 Runnable,因为它有可能随时被调度回来继续执行任务。

(3)Blocked-阻塞状态:
阻塞状态包括三种状态,分别是 Blocked(被阻塞)、Waiting(等待)、Timed Waiting(计时等待)
处于运行中的线程,由于某种原因放弃对cpu的使用权,处于阻塞状态,直到其进入就绪状态,才有机会再次被cpu调用进入运行状态。一般进入Blocked状态 只有一种可能,就是进入 synchronized 保护的代码块或者方法时没有抢到monitor锁, 当处于 Blocked的线程抢到 monitor 锁,就会从 Blocked 状态回到Runnable 状态。

(4)Waiting-无限时等待:没有超时时间的等待,进入waiting状态一般有以下几种情况:

  • 没有设置 Timeout 参数的 Object.wait() 方法, 其他线程调用notify() 或 notifyAll()来唤醒。
  • 没有设置 Timeout 参数的 Thread.join() 方法,join的线程结束或者被中断,上一线程才会进入就绪状态。
  • LockSupport.park() 方法,通过 执行了 LockSupport.unpark()方法唤醒。

(5)Timed Waiting-有限时等待:有超时时间的等待, 如果超时时间到了且能直接获取到锁,直接恢复到 Runnable 状态;进入此状态一般有以下几种情况:

  • 设置了时间参数的 Thread.sleep(long millis) 方法;
  • 设置了时间参数的 Object.wait(long timeout) 方法;
  • 设置了时间参数的 Thread.join(long millis) 方法;
  • 设置了时间参数的 LockSupport.parkNanos(long nanos) 方法和 LockSupport.parkUntil(long deadline) 方法,执行LockSupport.unpark()方法可直接唤醒。

(6)Terminated-终止状态:线程执行结束的状态。

  • 正常结束,线程结束,也就是线程终止,
  • 出现一个没有捕获的异常,终止了 run() 方法,最终导致意外终止。
  • 调用stop(),会造成死锁,线程不安全,不建议使用

2、用一张图来说明各个状态之间的转化流程:
在这里插入图片描述

http://www.yayakq.cn/news/138326/

相关文章:

  • 滕州做网站的微信设计网站建设
  • 服装行业网站开发学校网站建设营运预算
  • 如何做网站推广页面网站备案是哪个部门
  • 沛县做网站网站建设规划书电商
  • 网站建设和网络推广外包网站开发毕业设计中期检查表
  • 凡科网站建设平台wpautop wordpress
  • 没有网站可以做cpc吗汽车之家网站
  • 如何维护建设网站深圳全网营销公司有哪些
  • 网站建设报价单ppt哪个网站可下载免费ppt
  • 绥化安达网站建设做电源的网站
  • 青岛市城市建设局网站郑州整站网站推广工具
  • 南宁网站建设免费推广网站推广软文
  • 网站建设 乐清网络公司成都有哪些好玩的地方
  • 做网站app价格多少钱建筑工程网络副业
  • 网页设计素材网站花学做网站论坛好吗
  • 重庆sem网站推广深圳深圳龙岗网站建设
  • 如何查找昆明做网站服务的公司百度竞价推广开户
  • 帮企业做网站中国纪检监察报多久一期
  • 自己做网站商城需要营业执照吗公司简历模板
  • 网站开发做网站青岛seo服务哪家好
  • 深圳企业网站建设标准最新注册公司流程及费用
  • 天津网站建设品牌推广wordpress 局部刷新
  • 公司网站建设情况wordpress文章不登录看不到
  • 做设计不进设计公司网站手游门户网站建设
  • asp网站500错误iis7用数据库添加文章wordpress
  • 网站建设工作小组推进表网站导航功能
  • 中职教材 网站建设wordpress图片特效插件下载
  • 彩云小梦ai写作网站如何借用别人网站做模板
  • 万峰科技著.asp.net网站开发四酷全书电子工业出版社肇庆网站制作案例
  • 深圳网站开发技术wordpress 游客权限