美文网首页
多线程常用方法2(休眠)

多线程常用方法2(休眠)

作者: 秋笙fine | 来源:发表于2019-01-24 12:24 被阅读0次

定义:

所谓的线程休眠就是让线程的速度变慢一点。用sleep方法。

public static void sleeping(long mills) throws InterruptedException

sleep方法上还有一个异常。如果打断休眠就会抛出这个异常。

范例:观察休眠特点:

package TestDemo;



class MyThread implements Runnable{//Runnable接口子类,也是线程公有对象,其实例化对象在堆中
    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            try {
                Thread.sleep(1000);
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName()+",x="+i);
        }
    }   
}

public class TestDemo{
    
    public static void main(String[] args)throws Exception{
        MyThread mt=new MyThread();
    
        new Thread(mt,"Thread A").start();
    }
    
}
image.png image.png

程序是缓慢执行的。

因为每一次执行到run方法的线程都要进行休眠。

默认情况下,如果设置了多个线程对象,那么所有的线程对象将一起进入到run方法,(资源抢占问题的引出,其实并不是一起进入,只是间隔太短) 这一点细微差别,可能会产生脏数据。

package TestDemo;



class MyThread implements Runnable{//Runnable接口子类,也是线程公有对象,其实例化对象在堆中
    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            try {
                Thread.sleep(1000);
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName()+",x="+i);
        }
    }   
}

public class TestDemo{
    
    public static void main(String[] args)throws Exception{
        MyThread mt=new MyThread();
    
        new Thread(mt,"Thread A").start();
        new Thread(mt,"Thread B").start();
        new Thread(mt,"Thread C").start();

    }
    
}
image.png

相关文章

网友评论

      本文标题:多线程常用方法2(休眠)

      本文链接:https://www.haomeiwen.com/subject/vcdyjqtx.html