一、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

相关文章: