時間對象

事件對象和互斥對象,一樣都屬於核心對象,它包含一個使用計數,一個用於標識該事件是一個自動重置還是一個人工重置的布爾值,和另一個用於指定該事件處於已通知狀態還是未通知狀態的布爾值。

基本介紹

  • 中文名:時間對象
  • 外文名:Time object
概述,創建事件對象,時間對象的操作,

概述

由上面所述,可見事件對象可分為兩種,一種是人工重置的,另一種是自動重置的。當人工重置的事件得到通知時,等待該時間的所有執行緒均變為可調度執行緒。而當一個自動事件得到通知時,等待該時間的所有執行緒中只有一個執行緒變為可調度執行緒。

創建事件對象

要創建一的事件對象,可以調用Windows API中的CreateEvent。它可以創建一個有名的或匿名的事件對象,函式原型如下
HANDLE CreateEvent( LPSECURITY_ATTRIBUTESlpEventAttributes,
BOOLbManualReset,
BOOLbInitialState,
LPCTSTR lpName
);
第一參數lpEventAttributes是一個指向SECURITY_ATTRIBUTES結構指針,由它決定該函式返回的句柄是否能夠被子進程繼承,如果為NULL,則不能被繼承。通常指定為NULL(即默認的安全機制)。
第二參數bManualReset,若指定為TRUE,則創建一個人工重置的事件對象,此時可以利用函式
BOOL ResetEvent(HANDLE hEvent)人工重置其狀態為無信號的;若指定為FALSE,系統將創建一個自動重置對象,系統將
自動將其狀態置為無信號的。
第三參數 bInitialState,若為TRUE則初始化創建的事件對象為有信號的(signaled),否則將創建的事件對象初始化為無信號的(nonsignaled)。
第四參數 lpName, 若指定為NULL,則創建一個匿名的事件對象
返回值,如果函式成功,將返回一個該函式創建的事件對象的句柄。如果創建的事件對象是有名的,並且在調用該函式前,已經有一個同名的事件對象創建了,那么該函式將返回一個指向已存在的事件對象的句柄,並且調用GetLastError(void)函式時,將返回ERROR_ALREADY_EXISTS;如果函式調用失敗,那么它將返回NULL。

時間對象的操作

//聲明一個時間對象
Date dt = new Date();
//聲明一個時間格式化器 SimpleDateFormat sd = new
SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//聲明一個日曆時間對象
Calendar c = Calendar.getInstance();
//給日曆時間對象賦值
c.set(1992, 1, 9, 8, 20, 23);
//通過getTime()方法返回一個時間對象,使用格式化器的format()方法格式化輸出時間
System.out.println(sd.format(c.getTime()));

相關詞條

熱門詞條

聯絡我們