Extends Thread vs implements Runnable

Kita tahu bahwa kita bisa membuat thread dengan dua cara tersebut di atas, tetapi pertanyaannya adalah kapan kita harus memakai cara yang satu dan bukan yang lain? Apa kelebihan metode yang satu dibandingkan yang lain?

Alasan dan pendapat yang dikumpulkan:

  1. Phylosophical :

  • Dikatakan, meng-extends suatu kelas konkret selalu lebih berisiko dan bukan pilihan yang baik (Keuntungan abstraction).

  • According to Cay S. Horstmann and Gary Cornell in Core Java 2: Volume II – Advanced Features…

“…forming a subclass of the Thread class … is no longer recommended. You should decouple the task that is to be run in parallel from the mechanism of running it.”

  1. Practical :

  • Lebih baik menggunakan interface Runnable karena dengan demikian kelas tersebut masih bisa meng-extends superclass lain.
  • Kelas Thread itu sendiri sebenarnya juga meng-implements Runnable, artinya jika kita extends Thread, sebenarnya kita secara tidak langsung juga implements Runnable, jadi kenapa kita tidak secara langsung meng-implements Runnable saja?

hm.. barangkali ada alasan menarik lainnya..?

Advertisements