在**設計欄位時我們經常會碰到需要加狀態字段的場景。狀態即此刻的情況、形態。從乙個狀態到另個狀態是質變,而質變是由量變累積而成,譬如年老的狀態,是時間累積、內分泌系統漸衰,而從年輕到年老的質變。**中的狀態字段亦復如是。
原子任務的狀態轉移是單一操作的,該任務只有 todo 和 done 兩種狀態,該任務無法被部分完成,只能整體完成或沒完成。
public class task
然而現實世界中的任務大多是復合任務,據我所知有以下幾種簡單復合方式:
多個平行原子任務復合,且稱之為平行復合任務;
多個鏈狀原子任務復合,且稱之為鏈狀復合任務;
多個樹狀原子任務復合,且稱之為樹狀復合任務;
上面復合方式還可以巢狀,產生更複雜的復合方式,即多重復合。
這時,我們面臨乙個挑戰,我們該如何定義這些復合任務的狀態呢?
我們說是量的積累導致了狀態的質變,那麼可不可以從過程量入手呢?
答案是明確的,我認為這應該是絕妙而又充滿哲學意味的手段。現以最簡單的平行復合任務為例,試編碼如下:
(1)首先我們需要乙個計數器,用來統計總數和已完成的任務數量。
public class counter
public void increasetotal()
public void increasedone()
public boolean totallydone()
}
(2)再者,我們在復合任務內部重新整理狀態,每當乙個子任務完成時檢查並重新整理內部狀態。這樣,狀態的重新整理就內聚了,外部量變,內部質變。
public class compoundtask
public void increasetaskdone()
private void refreshstatus()else
}}
以上是基礎實現,旨在探求一種通用的描述復合任務狀態的解決方案。多重復合任務可以通過同類歸併壓平成乙個計數器,不同類的任務建議使用不同的計數器。 復合命題及其推理 上
復合命題是由簡單命題通過邏輯聯結詞組合而成的,它由支命題和聯結詞兩部分構成,聯結詞決定復合命題的邏輯性質。根據聯結項的不同性質,復合命題分為聯言 選言 假 負命題。一 聯言命題概述 且 聯言命題是斷定多種事物情況同時存在的一種復合命題,由聯言支 聯言聯結詞兩部分構成。例1 油哥是學生,並且是兼職作家...
程序及其狀態
作業系統必須全方位地管理計算機系統中執行的程式 因此,作業系統為正在執行程式建立乙個管理實體 程序 程序是乙個具有一定獨立功能的程式關於某個資料集合的一次執行活動 程序是作業系統進行資源分配和排程的乙個獨立單位 乙個程序包括五個實體部分,分別是 os管理執行程式的 資料結構p 執行程式的 記憶體 c...
執行緒狀態及其轉換
1.新建狀態 new 執行緒物件被建立後,就進入了新建狀態。例如,thread thread new thread 2.就緒狀態 runnable 執行緒物件被建立後,其它執行緒呼叫了該物件的start 方法,從而來啟動該執行緒。3.執行狀態 running 執行緒獲取cpu許可權進行執行。4.阻塞...