Gue*_*est 0 java concurrency multithreading
通常线程可以通过两种方式创建
通过阅读所有教程,所有人都说实现 Runnable 接口总是好的,因为如果您通过扩展(第一种方法)创建,则无法扩展任何其他类,我同意。而且如果我们通过扩展创建线程,那么每个线程都会创建新对象,而如果我们通过实现所有线程创建线程将共享相同的对象。
我的问题是,如果实现 Runnable 是最好的选择,而扩展线程是不好的做法,为什么 java 有这个选项?我相信如果我们通过扩展创建线程肯定会有一些优势(我相信我们应该使用扩展线程方法,当没有其他父类不是唯一的答案时)
提前致谢
在 2018 年,真正的答案是:您根本不使用裸机线程。
这些天我们有像fork/join、futures或ExecutorService框架这样的抽象。
避免自己做线程!
如果你这样做,你会考虑“古老的” Favor Composition 而不是继承。其中,在这种情况下归结为:不要扩展线程,而是实现 Runnable。你不希望限制使用类extends,当你可以逃脱implements,而不是!
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |