Thread_run()方法

cas 1:

 package threadTest;

 public class ThreadTest {
public static void main(String[] args) {
Thread t = new Thread(new Thread3()
);
t.run();
t.run();
t.start();
}
} class Thread3 implements Runnable { @Override
public void run() {
System.out.println("RUNNING");
}
}

输入结果:

RUNNING
RUNNING
RUNNING

线程的start方法是将线程提交给操作系统,然后该线程进入Runnable状态,等待系统分配时间片,然后线程执行(run方法执行)

run方法:Thread类中的run方法继承自Runnable接口

t为Thread实例,t.run()执行的是Thread类中的run( )方法,该run( )方法继承自Runnable接口,Thread3类重写了Runnable的run方法,t又通过Thread类创建,

因此,t.run()执行的是Thread3类重写的run()方法,主线程中普通的方法调用;t.start()开启t线程,执行run()方法

case 2:

 package threadTest;

 public class ThreadTest {
public static void main(String[] args) {
Thread t = new Thread() {
public void run() {
pong();//通过匿名内部类创建线程对象,重写run方法,该语句不会有输出
}
};
t.run();
System.out.println("Ping");
} protected static void pong() {
System.out.println("Pong");
}
}

t.run();直接调用重写的run方法,而不是开启线程。

由以上两个案例说明:

- 线程的开启,需要用线程实例调用start()方法

- t.run()也能执行重写的run()方法,但不是开启线程,只是普通的方法调用

上一篇:poj 3249(bfs+dp或者记忆化搜索)


下一篇:hdu 1176免费馅饼(记忆化搜索)