执行如下代码:
public static void main(String[] args) {
// 创建线程一
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// 获取到当前执行线程
Thread currThread = Thread.currentThread();
System.out.println("执行线程一,线程名:" + currThread.getName());
}
});
// 调用 run 方法
thread.run();
// 创建线程二
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
// 获取到当前执行线程
Thread currThread = Thread.currentThread();
System.out.println("执行线程二,线程名:" + currThread.getName());
}
});
// 调用 start 方法
thread2.start();
}
执行结果如下:
从上述结果我们可以看出:当调用 run 方法时,其实是调用当前主程序 main 来执行方法体的;而调用 start 方法才是真正的创建一个新线程来执行任务。
start方法 VS run方法
a.方法性质不同:run 是一个普通方法,而 start 是开启新线程的方法。
b.执行速度不同:调用 run 方法会立即执行任务,调用 start 方法是将线程的状态改为就绪状态,不会立即执行。
c.调用次数不同:run 方法可以被重复调用,而 start 方法只能被调用一次。