zoukankan      html  css  js  c++  java
  • 多线程的细节

      1.sleep方法和wait方法异同点是什么?

      答:相同点:可以让线程处于冻结状态

        不同点:sleep必须指定时间。wait可以指定时间,也可以不指定时间

            sleep时间到,线程处于临时阻塞或运行。wait如果没有时间,必须要通过notify或者notifyAll唤醒

            sleep不一定非要定义在同步中。wait必须定义在同步中。

            都应在同步中,sleep不会释放锁,wait会释放锁

      2.线程如何停止?

      答:stop方法过时了,看起描述发现,有其他解决方案。线程结束:就是让线程任务代码执行完,run方法结束。run方法咋结束呢?run方法中通常都定义循环,只要控制循环就可以了。注意:万一线程在任务中处于了冻结状态,name还能判断标记吗?不能。怎么办呢?通过查阅stop方法的描述,发现提供了一个解决方案:如果等待时间过长可以通过interrupt来中断等待。所谓的中断并不是停止线程,interrupt的功能是,让线程重新具备cpu的执行资格。因为是强制性的所以有异常抛出,可以再catch中捕获异常,在异常处理里中改变标记,让循环结束,让run方法结束。

      3.守护线程,后台线程,一般创建的是前台线程。前台后台线程运行时都是一样的,获取CPU的执行权执行。只有结束的时候有些不同:前台线程要通过run方法结束,线程结束;后台线程也可以通过run方法结束,线程结束,还有另一种情况,当进程中所有的前台线程都结束了,这时无论后台线程处于什么状态,都会结束,从而进程结束,进程结束依赖的都是前台线程。

  • 相关阅读:
    Node 命令行工具 commander.js 快速上手
    使用 express 极简处理前端路由的 history 模式问题
    在博客中插入希沃白板课件
    休息一下(屏幕提醒)
    vue htmlWebpackPlugin.options.title 标题设置
    使用 docker 部署 elasticsearch 并安装 ik 中文分词器
    .NET 中的计时 tick 是多长?
    剑指offer队列的最大值(主队列+辅助队列)
    Golang垃圾回收原理解析
    Golangchannel底层实现精要
  • 原文地址:https://www.cnblogs.com/txdd-tg/p/8784569.html
Copyright © 2011-2022 走看看