Create Thread

Runable and Thread

java.lang.Runable

  • 只是一個提供run()方法的介面
public interface Runnable {
    public abstract void run();
}

java.lang.Thread

  • Thread實做Runnable,需實做run()
  • start()用start0()來啟動一個新的執行緒,執行緒會執行run()
  • 傳入Runnable來建立Thread實體,run()會執行Runnable物件的run()
public class Thread implements Runnable {
    ...

    public Thread() {
         init(null, null, "Thread-" + nextThreadNum(), 0);
    }

    public Thread(Runnable target) {
         init(null, target, "Thread-" + nextThreadNum(), 0);
    }

    ...

    public synchronized void start() {
        if (threadStatus != 0)
            throw new IllegalThreadStateException();

        group.add(this);
        boolean started = false;
        try {
            start0();
            started = true;
         } finally {
            try {
                if (!started) {
                    group.threadStartFailed(this);
                }
            } catch (Throwable ignore) {}
        }
    }

    private native void start0();

    @Override
    public void run() {
        if (target != null) {
            target.run();
        }
    }
}

from: Java多線程系列--「基礎篇」03之 Thread中start()和run()的區別

results matching ""

    No results matching ""