1. run()方法,用于封装线程运行的任务代码。直接用创建的线程对象调用,
并没有产生新的线程,仅仅是当前正在运行的线程(如,主线程)在执行run方法.
2. start()方法,共有两个作用,1,开启了当前线程,也就是说,
当前程序又多了一条执行路径和当前线程(主线程)并发执行。
而run()方法会被新开启的线程运行。
下面例子中,请注意输出的线程的名字是不同的。
public class TestThread {
/**
* @auther 六眼飞鱼
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Runner r = new Runner();
Thread t=new Thread(r);//调用了Thread(Runnable target)方法。且父类对象变量指向子类对象。
t.start(); //在子线程中去执行
for(int i=0;i<10;i++){
System.out.println("进入Main Thread运行状态");
System.out.println(i);
System.out.println("thread1 name = "+Thread.currentThread().getName());
try {
Thread.currentThread().sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// r.run(); //这是方法调用,而不是开启一个线程,可以取消注释比较线程的名字是不同的。这是在主线程中执行
}
}
public class Runner implements Runnable{
@Override
public void run() {
System.out.println("thread2 name = "+Thread.currentThread().getName());
for(int i=0;i<50;i++){
System.out.println("进入Runner运行状态");
System.out.println(i);
}
}
}