SORU
3 Temmuz 2015, Cuma


Neden İplik soyut bir sınıf değildir ve start() son değil mi?

Neden Thread sınıfı normal bir sınıf olarak uygulanan ve bir olduÖzetrun() yöntem soyut varlık sınıfı.

Muhtemelen herhangi bir sorun tanıtacak? Veya bu şekilde olmanın herhangi bir kullanımı var mı?

Ayrıca, Thread.start() yöntem çok özel bir yöntem olması gerekiyordubaşka bir sınıf tarafından uygulanan edilemeyecekEğer yanılıyorsam değil (). Ve dolayısıyla final anahtar kelime bu daha başka bir yöntem daha uygun olurdu sanırım.

Ama söylediğim gibi, bu yöntem geçersiz kılmak ve bunu kullanabiliyorum

public class Test extends Thread {
    public static void main (String... args) {
        Thread test = new Test();
        test.start();
    }

    @Override
    public void run() {
        System.out.println("New thread started...");
    }

    @Override
    public void start() {
        System.out.println("Did anyone tell you I will spawn a new thread??");
    }
}

Belli ki sadece basılmış

Kimse sana yeni bir iş parçacığı spawn?

Mühendis senin yerine kafa karıştırıcı dışında ağır basan herhangi bir kullanım var mı?

Neden bu yöntem son İplik sınıf içinde bildirilmiş değil.

CEVAP
3 Temmuz 2015, Cuma


Elbette, diğer paketler için seçebilirsiniz, ama bu gerekir anlamına gelmez.

Neden iş sınıfı normal bir sınıf olarak uygulanır ve çalışma ile soyut bir sınıf değil miydi() yöntemi soyut olmak.

Bir başlangıç, bir iş parçacığı oluşturmak için önerilen yol İplik alt sınıfı değildir. Önerilen yöntem iş Parçacığı oluşturucu için bağımsız değişken olarak ** 8, ve bir pas tanımlamak için:

Runnable r = new Runnable() {
    @Override
    public void run() {
        ...
    }
};
Thread t = new Thread(r);
t.start();

Ve bu nedenle nihai anahtar kelime bu daha başka bir yöntem daha uygun olurdu sanırım.

Evet ve hayır. Başlangıç uygulaması yerini alamaz() kendi uygulama ile, ama yapabilirsinizekEğer isterseniz Başlat şeyler ():

@Override
public void start() {
    System.out.println("Did anyone tell you I will spawn a new thread??");
    super.start();
}

Bu, Java sıfırdan bugün yeniden tasarlandı, tasarım farklı olacağını iyi bir şans olduğunu söyledi. Bu sınıf Java 1.0, ve hala geriye dönük olarak uyumludur tarihleri unutmayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • TecNoob

    TecNoob

    15 AĞUSTOS 2013
  • thetrollska

    thetrollska

    2 EKİM 2009
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011