我想创建一个类,它的一些方法在不同的线程上,我不是我们最好的方法来实现它。
我考虑过三个选项:
每个方法的匿名类 - 一方面它更容易实现,另一方面它的可读性更低,并且如果将来我决定不在单独的线程上运行则更难维护具体方法。
实现runnable并使用switch case语句 - 一方面它更具可读性,我可以对类进行编码,使得它在某些方面更易于维护。但是,它将在run方法中有一个大的开关案例
将类划分为多个类,并将需要单独线程的每个方法放在一个单独的类中。 - 它没有以前的选项所具有的任何缺点,但它可能导致许多类只有一个方法(运行)。此外,它仍然存在一些可归因性问题
为每个线程创建一个特殊类,并从所有类中运行所有必需的方法。 - 打破SRP?
感谢您的帮助
答案 0 :(得分:1)
我想创建一个类,它的一些方法在不同的线程上,我不是我们最好的方法来实现它。
每个方法的匿名类
我同意你的评估。这将使代码可读性降低。不是直接的胜利。归结到它,匿名类是刚刚内联完成的真正类。我会在你的Java文件中支付额外的字符并创建子类。见下文。
实现runnable并使用switch case语句
如果多个方法共享大量数据和方法,这肯定在以前完成,可能是必要的。但我认为以下答案更好。
将班级划分为多个班级
我认为这是正确的做法。您的每个类都可以实现Runnable
,因此您可以轻松地将它们提交到线程池。如果方法需要共享数据和其他方法,那么您可以使类成为更大类中的子类,并确保它们不是static
。
为每个线程创建一个特殊的类
不确定“特殊”是什么意思。