扩展线程优先于实现Runnable的场景?

Raj*_*Raj 10 java multithreading runnable

作为初学者,我正在阅读有关在Java中实现多线程的两种方法.

我在SO和许多其他线程上阅读了这个帖子.

据说这是

"prefer runnable",仅在您专门处理Thread的行为时才扩展线程.

有人可以通过为我提供一小段片段来帮助我理解这一行,从而解释我对Thread行为的专业意义.

ski*_*iwi 11

您应该扩展一个Thread扩展其他库类的扩展.

List举一个例子,更具体地说ArrayList,您可以在其上添加额外的行为,例如在添加某个谓词失败时拒绝值.
然后你可以称之为PredicatedArrayList.

关于你是否想要延伸ArrayList到这里仍然是一个争论,但是这个问题的争论还没有结束.

因此,扩展线程的示例将是在特定时间量之后杀死自己的线程.然后你会有SuicidingThread extends Thread,这可能有一个构造函数花时间.

这甚至强化了你应该把你的实际任务放在一个论点中的论点Runnable.
喜欢Runnable somethingRunnable = new SomeClass();,在哪里SomeClass implements Runnable.

现在你可以做到:

  • Thread someThread = new Thread(somethingRunnable);
  • Thread someThread = new SuicidingThread(somethingRunnable, 5, TimeUnit.DAYS);

所以这将是扩展线程的用例.

  • 这是一个非常好的答案.需要更多的爱. (2认同)