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方法结束,线程结束,还有另一种情况,当进程中所有的前台线程都结束了,这时无论后台线程处于什么状态,都会结束,从而进程结束,进程结束依赖的都是前台线程。

  • 相关阅读:
    PHP 快速实现大文件上传
    websocketd
    mybatis——一级缓存、二级缓存
    mybatis学习——多对一和一对多查询
    XML文件存在中文注释报错问题( 3 字节的 UTF-8 序列的字节 3 无效)
    mybatis设置自动提交事务
    mybatis之Param注解
    mybatis学习——实现分页
    mybatis学习——日志工厂
    mybatis——解决属性名和数据库字段名不一致问题
  • 原文地址:https://www.cnblogs.com/txdd-tg/p/8784569.html
Copyright © 2011-2022 走看看