JDKソースコード分析Runableは典型的なコマンドモードであり、Runnableはコマンドの役割を果たし、Threadは呼び出し元として機能し、startメソッドはその実行メソッドです。

JDKソースコード分析

Runnableは典型的なコマンドモードです。

Runnableはコマンドの役割を果たし、Threadは呼び出し元として機能し、startメソッドはその実行メソッドです。

/命令接口(抽象命令角色)
public interface Runnable {
    public abstract void run();
}
​
//调用者
public class Thread implements Runnable {
    private Runnable target;
    
    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();
}

ネイティブメソッドstart0()が呼び出され、システムメソッドが呼び出され、スレッドが開始されます。

レシーバーはプログラマーに公開されており、レシーバーを自分で定義できます。

/**
 * jdk Runnable 命令模式
 *      TurnOffThread : 属于具体
 */
public class TurnOffThread implements Runnable{
     private Receiver receiver;
    
     public TurnOffThread(Receiver receiver) {
        this.receiver = receiver;
     }
     public void run() {
        receiver.turnOFF();
     }
}
**
 * 测试类
 */
public class Demo {
     public static void main(String[] args) {
         Receiver receiver = new Receiver();
         TurnOffThread turnOffThread = new TurnOffThread(receiver);
         Thread thread = new Thread(turnOffThread);
         thread.start();
     }
}

 

おすすめ

転載: blog.csdn.net/qq_39368007/article/details/114032099