目录
概念
start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。
解释
假设我们定义了一个
public class test implements Runnable{
public void run(){
}
}
test是一个类,实现Runnable,也就是说我们有一个run方法可以执行,这个run方法是test类自己的方法,如果test被实例:
Thread A = new Thread(new test());
那么A的run方法就可以被调用并执行,但是仅仅是调用A.run的线程在执行test类的run方法而已。
A.run();
但是如果是:
A.start();
那么就会正儿八经的开启一个线程,A线程启动!然后自己在自己的线程中执行自己的run方法。
示例
代码
public class Test implements Runnable{
@Override
public void run() {
for (int i = 0; i < 20; i++){
System.out.println(Thread.currentThread().getName());
}
}
public static void main(String[] args) throws InterruptedException {
Thread A = new Thread(new Test());
Thread B = new Thread(new Test());
A.start();
B.run();
}
}
运行结果
main
main
main
main
main
main
main
main
main
main
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
Thread-1
main
main
main
main
main
main
main
main
main
main