javalibs的快速初始化

javalibs的快速初始化,java,constructor,Java,Constructor,我使用的是来自Java并发libs的ExecutorService,但我不确定是否应该像下面那样急切地初始化ExecutorService public class Opts extends Runnable { //... private ExecutorService executor = Executors.newFixedThreadPool(10); //... } 通常我不会初始化第三方依赖项或我自己的类,但在本例中,它来自Java,并且猜测它的依赖项是最小的。我

我使用的是来自Java并发libs的ExecutorService,但我不确定是否应该像下面那样急切地初始化ExecutorService

public class Opts extends Runnable {
   //...
   private ExecutorService executor = Executors.newFixedThreadPool(10);
   //...
}
通常我不会初始化第三方依赖项或我自己的类,但在本例中,它来自Java,并且猜测它的依赖项是最小的。我更喜欢什么


用例:Opts类也可以运行并侦听事件。当事件发生时,它会使用ExecutorService来执行它。

您可以选择您喜欢的。由你自己决定

但我建议你保持简单。除非有充分的理由使用延迟初始化,否则请使用快速初始化

(在这种情况下,一个很好的理由可能是不太可能需要线程池,或者应用程序的快速启动是一个关键要求。)


通常我不会初始化第三方依赖项或我自己的类,但在这种情况下


你可能想回顾一下。我不确定全面优惠是否合理。尤其是那些可能使事情变得比实际情况更复杂的事情。

你可以选择你喜欢的。由你自己决定

但我建议你保持简单。除非有充分的理由使用延迟初始化,否则请使用快速初始化

(在这种情况下,一个很好的理由可能是不太可能需要线程池,或者应用程序的快速启动是一个关键要求。)


通常我不会初始化第三方依赖项或我自己的类,但在这种情况下


你可能想回顾一下。我不确定全面优惠是否合理。尤其是可能使事情变得比需要的更复杂的情况。

这实际上取决于用例,如果没有您所采取的见解和方法,没有人能够帮助您使用UseCase进行更新。在这种情况下,请声明constantif Opts不是一个单例,并且您正在为每个Opts对象创建池-您必须确保在对象超过其UseCase时调用
executor.shutdown()
,并将其设置为默认值,默认情况下,将所有字段设置为最终字段。只有在你有充分理由这样做的情况下才偏离这一点。这样做会使你的代码更加健壮:它的“状态”差异比可能发生的要小,使事情不可变会大大降低代码的复杂性。这实际上取决于用例,如果没有您所采取的见解和方法,没有人能够帮助您使用UseCase进行更新。在这种情况下,请声明constantif Opts不是一个单例,并且您正在为每个Opts对象创建池-您必须确保在对象超过其UseCase时调用
executor.shutdown()
,并将其设置为默认值,默认情况下,将所有字段设置为最终字段。只有在你有充分理由这样做的情况下才偏离这一点。这样做会使你的代码更加健壮:它的“状态”与可能出现的状态相比差异更小,使事物不变会显著降低代码的复杂性。你能详细说明最后一部分吗?哪一部分需要详细说明?我觉得很清楚。特别是如果你在我回答的前一部分的上下文中阅读,你能详细说明最后一部分吗?哪一部分需要详细说明?我觉得很清楚。特别是如果你在我前面的回答中读到它。