单例模式和静态对象的销毁
场景描述:
1.为某软件做了一个扩展功能的插件,插件可以随时被加载或删除,而不影响软件本身的运行;
2.插件中定义了一个单例的类,也就是说,这个类的存在唯一一个静态对象,这个静态对象在插件被加载时生成;
3.这个单例类的构造器中启动了一个维护线程;
4.在第一次加载插件时,单例类的唯一静态对象被创建,调用构造器时启动了维护线程;
5.删除插件,插件的删除代码中关闭了之前开启的那个维护线程,但此时单例类的静态对象依旧存在;
6.再次加载插件,因为之前插件中的单例类对象依旧存在,所以不会调用单例类的构造器,也不会启动维护线程。
如上描述,因为单例模式的原因,不能每次加载插件时都启动维护线程,要解决这个问题,只能每次都重启该软
件本身,但这不太实际,因为软件是必须一直运行的。
所以问题归结到:
能不能在删除插件时销毁其单例类的静态对象?或者更宽泛些,怎样手工销毁静态对象?