在一个类中处理多个线程的最佳方法是什么

时间:2017-02-08 08:47:07

标签: java multithreading

我想创建一个类,它的一些方法在不同的线程上,我不是我们最好的方法来实现它。

我考虑过三个选项:

  1. 每个方法的匿名类 - 一方面它更容易实现,另一方面它的可读性更低,并且如果将来我决定不在单独的线程上运行则更难维护具体方法。

  2. 实现runnable并使用switch case语句 - 一方面它更具可读性,我可以对类进行编码,使得它在某些方面更易于维护。但是,它将在run方法中有一个大的开关案例

  3. 将类划分为多个类,并将需要单独线程的每个方法放在一个单独的类中。 - 它没有以前的选项所具有的任何缺点,但它可能导致许多类只有一个方法(运行)。此外,它仍然存在一些可归因性问题

  4. 为每个线程创建一个特殊类,并从所有类中运行所有必需的方法。 - 打破SRP?

  5. 感谢您的帮助

1 个答案:

答案 0 :(得分:1)

  

我想创建一个类,它的一些方法在不同的线程上,我不是我们最好的方法来实现它。

     

每个方法的匿名类

我同意你的评估。这将使代码可读性降低。不是直接的胜利。归结到它,匿名类是刚刚内联完成的真正类。我会在你的Java文件中支付额外的字符并创建子类。见下文。

  

实现runnable并使用switch case语句

如果多个方法共享大量数据和方法,这肯定在以前完成,可能是必要的。但我认为以下答案更好。

  

将班级划分为多个班级

我认为这是正确的做法。您的每个类都可以实现Runnable,因此您可以轻松地将它们提交到线程池。如果方法需要共享数据和其他方法,那么您可以使类成为更大类中的子类,并确保它们不是static

  

为每个线程创建一个特殊的类

不确定“特殊”是什么意思。