一楼的朋友都明确思路了;这是代码体现.
线程创建的俩种方式 :
package bbs.itheima.com;
public class TraditionalThread {
public static void main(String... args) {
/*
第一个创建线程思路:
1.继承Thread类。
2.覆盖Thread类中的run方法。
3.把线程要运行的代码封装到run方法中。
4.调用strat方法,开启一个线程并调用run方法。
*/
new Thread() {
public void run() {
while (true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.getName());
}
}
}.start();
/*
第二中创建线程思路:
1.实现Runnbale接口。
2.覆盖Runnable接口的run方法。
3.创建一个线程,把Runnable子类当成参数进行传递。
4.把线程要运行的代码封装到Runnable子类的run方法中。
5.调用线程的start方法,开启线程并调用run方法。
*/
new Thread(new Runnable(){
public void run(){
while (true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
}).start();
/*
如果Thread子类构造参数接收一个Runnable接口的子类对象,并且覆盖Thread子类的run方法。
那么调用strat方法会调用哪个线程里面的run方法呢?
答案:调用的是Thread子类中的run方法。
*/
new Thread(new Runnable(){
public void run(){
System.out.println("Runnable");
}
}){
public void run(){
System.out.println("subThread");
}
}.start();
}
}
}
}
/*
总结:俩种创建线程的方式,到底用哪个更合适呢?
其实俩种方法都可以,但是第二种方法更能体现面向对象的思想。
*/ |