线程Thread的t.start()实现的是异步的线程,t.run()方法实现的是同步线程;
package interview;
public class TestRun_Start extends Thread {
public static void main(String[] args) {
TestRun_Start ta = new TestRun_Start();
Thread t = ta.new TestThread2("新建线程1");
{
//启动线程不一定就马上执行
t.start();
System.out.println(currentThread() + "\t" + "1");
//当实现接口的对象Runnable被用来创建一个线程,启动线程使对象的run在独立执行的线程中调用的方法。
//方法run的一般合同是它可以采取任何行动。
//直接调用线程类的run(),会被当做普通的函数调用,程序依旧是主线程,此时的run启动的就是当前的线程main线程。
//也就是说start()方法才能异步调用run(),直接调用时同步的,无法达到多线程的目的;
t.run();
System.out.println(currentThread() + "\t" + "2");
}
}
class TestThread2 extends Thread {
public TestThread2(String n) {
super(n);
}
@Override
public void run() {
System.out.println(Thread.currentThread() + "\t" + "3");
}
}}