public class MyThread extends Thread { public MyThread() { System.out.println("构造方法的打印:" + Thread.currentThread().getName()); } @Override public void run() { System.out.println("run方法的打印:" + Thread.currentThread().getName()); }
public class Run2 { public static void main(String[] args) { MyThread mythread = new MyThread(); mythread.start(); //mythread.run(); } }第一种执行run()方法显示打印结果。原因:main线程调用自己定义的线程,构造方法中打印main,又因为执行run方法普通方法,并不是启动了一个线程,所以run方法中还是main
第二种执行start()方法显示打印结果。原因 同上对比可知
再看下面的案例:
public class CountOperate extends Thread { public CountOperate() { System.out.println("CountOperate---begin"); System.out.println("Thread.currentThread().getName()=" + Thread.currentThread().getName()); System.out.println("this.getName()=" + this.getName()); System.out.println("CountOperate---end"); } @Override public void run() { System.out.println("run---begin"); System.out.println("Thread.currentThread().getName()=" + Thread.currentThread().getName()); System.out.println("this.getName()=" + this.getName()); System.out.println("run---end"); } }
public class Run { public static void main(String[] args) { CountOperate c = new CountOperate(); Thread t1 = new Thread(c); t1.setName("A"); t1.start(); } }
运行结果如下: