我正在尝试在多线程程序中用 Java 编写观察模式来开发自己的日志程序。我的程序用于任何 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 添加到两个主题的线程,一个主题是我在上面粘贴的调度程序,即计时器在每个指定时间运行并通知LogWriter
需要创建新日志文件,而另一个目的是在添加消息时队列。代码没有按预期工作:*调度程序代码没有运行,我也试过了execute
。没有调用私有构造函数 * 线程启动器并不总是被调用 * 观察模式:我使用了 J2SE 接口Observable
,即Observe
它们没有按预期工作
请帮我。