一、run()方法
public void run()
public class testRunAndStart {
public static void main(String[] args) {
Thread thread1=new Thread(new Runnable() {
@Override
public void run() {
try {
long start = System.currentTimeMillis();
Thread.sleep(1000);
long end = System.currentTimeMillis();
System.out.println("thread1执行,花费"+(end-start)/1000+"秒");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread thread2=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("thread2执行");
}
});
thread1.run();
thread1.run();
thread2.run();
}
}
二、start()方法
public void start()
public class testRunAndStart {
public static void main(String[] args) {
Thread thread1=new Thread(new Runnable() {
@Override
public void run() {
try {
long start = System.currentTimeMillis();
Thread.sleep(1000);
long end = System.currentTimeMillis();
System.out.println("thread1执行,花费"+(end-start)/1000+"秒");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread thread2=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("thread2执行");
}
});
thread1.start();
thread2.start();
}
}
三、run()和start()区别与联系
- start()方法用于启动线程并使得线程处于就绪状态;run()方法用于执行线程的运行时代码(即run()方法相当于main线程下的普通方法,不是多线程的)。
分析:看run()和start()的简单举例会发现:
run()方法举例中,尽管thread1线程执行时会暂停1秒,但是它仍然在thread2之前运行,这就是因为调用run()方法只是看成main线程的一个普通函数,按照执行次序依次运行
start()方法举例中:因为thread1线程执行时会暂停1秒,所以thread2会优先执行完成。因为start()方法是多线程的。 - satrt()方法只可以调用一次,run()方法可以调用多次。
- start()方法会调用run()方法(start()方法会执行线程的准备工作,然后再执行run()方法)。