首页 > 代码库 > 线程(三)

线程(三)

一、wait和sleep区别?

1.wait可以指定也可以不指定。sleep必须指定时间。

2.在同步中时,对cpu的执行权和锁的处理不同。它们都能将线程处于冻结状态。

   wait:释放执行权,释放锁。

   sleep:释放执行权,不释放锁。

 

二、线程的结束

1.调用该线程的stop()方法结束线程。容易导致不可预知的错误不推荐。

2.run()方法执行结束,线程正常结束,常用标志位来结束线程。

例:用标志位来结束线程

技术分享
package com.test2;class StopThread1 implements Runnable{   private boolean flag=true;    public  void  run()    {        while(flag)        {                          System.out.println(Thread.currentThread().getName()+"....");         }      }                                public void setFlag()                  {        flag=false;    }}public class Demo2 {    public static  void main(String[] args)    {        StopThread1 st=new StopThread1();        Thread t1=new Thread (st);        t1.start();              int num=1;        for(;;)        {            if(++num==10)            {                st.setFlag();                                     break;            }            System.out.println("main"+num);        }        System.out.println("over");    }}
View Code

3.使用interrupt来中断线程。
* Interrupt //可以将线程从冻结状态强制恢复到运行状态中来,让cpu具备执行资格
* 但是强制动作会发生中断异常,记得要处理

 

线程(三)