多线程的细节

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