多线程常用方法2(休眠)
2019-01-24 本文已影响0人
秋笙fine
定义:
所谓的线程休眠就是让线程的速度变慢一点。用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