[线程]

[线程]

public class ThreadSleep extends Thread 
{
    public void run(){
        for(int a=0;a<50;a++){
            try{Thread.sleep(500);}catch(InterruptedException e){}
            System.out.println(Thread.currentThread().getName()+" : "+a);
        }
    }
    public static void main(String[] args) 
    {
        ThreadSleep t1=new ThreadSleep();
        ThreadSleep t2=new ThreadSleep();
        t1.start();
        t2.start();
    }
}



在java程序中要创建一个线程有两种方法,一种是extends Thread;另一种是implements Runnable;
当然推荐使用implements Runnable这种方法,因为实现此接口的同时也可实现其他接口,而继承Thread类后,不能再同时继承其他类了。
但是当我们要在一个线程中使用sleep()方法时,如果使用extends Thread方法去创建类那么可以直接使用sleep()方法,如果使用的是implements Runnable创建类,那么必须是Thread.sleep()的格式,否则编译器报错。

   1.Thread.Sleep(XXXX)函数就是干这种事的,他告诉操作系统“在未来的多少毫秒内我不参与CPU竞争”。 

   2.而Thread.Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争”。

    竞争 的结果也许是当前线程仍然获得CPU控制权,也许会换成别的线程获得CPU控制权。这也是我们在大循环里面经

常 会写一句Thread.Sleep(0) ,因为这样就给了其他线程比如Paint线程获得CPU控制权的权力,这样界面就不会假死在那里。

notify方法:在当前线程放弃了对象锁以后随机唤醒一个在该对象上等待的线程。


 

猜你喜欢

转载自blog.csdn.net/hengwujun0903/article/details/12747901