独自のロギング プログラムを開発するために、マルチスレッド プログラムで Java で Observe パターンを記述しようとしています。私のプログラムは任意の Java クラスで使用され、クラスを作成Logger
し、ロガーにメッセージを書き込むことができます。ロガークラスは、シングルトンクラスであるロガーマネージャークラスを呼び出し、スレッドであるプライベートクラスも持ち、実行時にスケジューラーが実行されるため、その実行をプライベートコンストラクターで保持しました。
private void LoggerManager() {
System.out.println("IN CONSTRUCTOR");
executorThread.submit(new CreateLoggerFileForSpecifiedTime());
}
static LoggerManager getInstance() {
if (LOGMANAGER == null) {
synchronized (LoggerManager.class) {
if(LOGMANAGER == null){
System.out.println("IN MANAGER");
LOGMANAGER = new LoggerManager();
}
}
}
return LOGMANAGER;
}
次に LoogerManager の「writeMessageToLog」メソッドがあります。
void writeMessageToLog(String componantName, String message,
Calendar messageCreationTime) {
LoggerDetails logDetails = new LoggerDetails(componantName, message,
messageCreationTime);
LogInitiater logIntiater = new LogInitiater(logDetails, noticeOfLoggerChange,
noticeOfMessageAdded);
executorThread.submit(logIntiater);
}
LogIntitiater
は LogWriter を 2 つのサブジェクトに追加するスレッドです。1 つのサブジェクトは上に貼り付けたスケジューラです。つまり、タイマーは指定された時間ごとに実行されLogWriter
、新しいログ ファイルを作成する必要があることを通知します。もう 1 つの目的は、メッセージが追加されたときです。待ち行列。コードが期待どおりに動作しない: * スケジューラ コードが実行されていませんexecute
。同様に試してみました。プライベート コンストラクターが呼び出されていない * スレッド イニシエーターが常に呼び出されているとは限らない * パターンを観察する: J2SE インターフェイスを使用しましたが、期待どおりに動作Observable
しObserve
ていません
私を助けてください。