【胡思亂想】命令模式 與 Thread Runnable

貓毛·波拿巴發表於2018-10-28

實現執行緒任務有兩種方式,一種是建立Runnable/Callable物件,傳遞給Thread。另一種是子類重寫Thread的run方法。

我覺得前一種像極了命令模式,或者說應該是命令模式的一個使用案例。

相似如下:

(1)Runnable 介面,只定義一個"()V"(表示無參,返回值為void)的方法run。建立Runnable物件的方式也有很多,這裡就提一種,那就是定義一個類A實現Runnable介面。這個類A一般還有其他引用其他物件,然後在run方法裡對其進行呼叫,來完成任務。

對應命令模式,Command介面,也只有一個()V方法,execute。Command的實現類,存有Receiver,然後在execute方法裡對Receiver進行操作。

(2)Thread物件,通過構造方法把Runnable傳入,啟動執行緒後,OS執行緒將回撥Thread.run方法,在這種情況下(即沒有覆蓋Thread.run),其將呼叫target.run(),執行Runnable物件。

對應命令模式,Invoker,通過setCommand方法傳入命令物件,然後在其某個方法中呼叫命令物件的execute方法。

 

相關文章