2012-06-17 11 views
7

Powiel możliwe:
Java: “implements Runnable” vs. “extends Thread”Zastosowanie tworzenia wątku przez rozszerzenie klasa gwint

Java oferuje dwie opcje do tworzenia IE klasy Thread albo poprzez wdrożenie Runnable lub poprzez rozszerzenie klasy Thread .

Wiem, że może istnieć wiele powodów do wprowadzenia Runnable, ale nie wiesz, gdzie scenariusz byłby rozszerzenie klasy Thread, aby utworzyć własną klasę Thread?

mógłbyś podać mi scenariusze gdzie rozszerzenie wątek wydaje się być możliwe lub lepszym rozwiązaniem lub korzystne ...

Było Question na gwincie ale nie zrobił odpowiedzieć na moje pytanie

Odpowiedz

2

Nie nie ma prawie żadnego powodu, aby przedłużyć wątek, w zasadzie jedynym powodem, dla którego chcesz rozszerzyć wątek, jest to, że masz zamiar zastąpić rzeczy inne niż run(), co jest generalnie złym pomysłem. Powodem, dla którego rzadziej jest rozszerzać wątek, jest to, że wtedy klasa nie może rozszerzać niczego innego, a jeśli tylko przesłonisz metodę run(), byłoby to bezcelowe przedłużyć wątek, a nie zaimplementować Runnable.

0

Runnable to interfejs z tylko jedną metodą run(), który musi zostać zaimplementowany przez klasę implementującą interfejs.

np.

public class MyRunnable implements Runnable { 
    @Override 
    public void run() { 
     //... 
    } 
} 

MyRunnable nie jest Thread nie można utworzyć nowego wątku tylko za pomocą tej klasy. Tak, to nie za bardzo sensu mówić -

Java oferuje dwie opcje do stworzenia klasy IE Wątek albo poprzez wdrożenie Runnable ...

można rozszerzyć klasę Thread ale podobnie jak @John powiedział, że nie ma w tym żadnego sensu.

Ale jeśli chcesz wykonać jakiś kod w nowym wątku, a następnie dodaje się jest najlepszym sposobem -

MyRunnable r = new MyRunnable(); 
Thread t = new Thread(r); 
t.start(); 

t.start() metoda rozpoczyna nowy wątek i wywołuje run() metodę na r (który jest instancją MyRunnable

+0

Właściwie znam tę koncepcję tworzenia wątku, ale chciałem wiedzieć, gdzie faktycznie utworzę wątek, rozszerzając klasę zamiast implementując interfejs;) – Satya

Powiązane problemy