Heim >Java >javaLernprogramm >Welche Möglichkeiten gibt es, Threads in Java zu erstellen? Drei Möglichkeiten zum Erstellen von Threads in Java

Welche Möglichkeiten gibt es, Threads in Java zu erstellen? Drei Möglichkeiten zum Erstellen von Threads in Java

不言
不言Original
2018-09-25 15:49:144255Durchsuche

In diesem Artikel erfahren Sie, welche Möglichkeiten es gibt, Threads in Java zu erstellen. Die drei Möglichkeiten, Threads in Java zu erstellen, haben einen gewissen Referenzwert. Ich hoffe, dass sie für Sie hilfreich sind.

1. Erben Sie die zu erstellende Thread-Klasse.

Durch das Erben von Thread und das Umschreiben seiner run() führt der Thread die Aufgabe in der run-Methode aus. Die erstellte Unterklasse kann Thread-Methoden ausführen, indem sie die Methode start() aufruft.

Durch die Erbung der von Thread implementierten Thread-Klasse können mehrere Threads die Instanzvariablen der Thread-Klasse nicht gemeinsam nutzen. (Es müssen verschiedene Thread-Objekte erstellt werden, die natürlich nicht geteilt werden)

Beispiel:

/**
 * 通过继承Thread实现线程
 */
public class ThreadTest extends Thread{
  
  private int i = 0 ;

    @Override
    public void run() {
        for(;i<50;i++){
            System.out.println(Thread.currentThread().getName() + " is running " + i );
        }
    }

    public static void main(String[] args) {
        for(int j=0;j<50;j++){if(j=20){
                new ThreadTest().start() ;
                new ThreadTest().start() ;
            }
        }
    }
}

2. Erstellen Sie eine Thread-Klasse über Runnable Schnittstelle

Diese Methode muss zuerst eine Klasse definieren, um die Runnable-Schnittstelle zu implementieren und die run()-Methode der Schnittstelle zu überschreiben. Diese Ausführungsmethode ist der Thread-Ausführungskörper. Erstellen Sie dann ein Objekt der Runnable-Implementierungsklasse als Parameterziel für die Erstellung des Thread-Objekts Dieses Thread-Objekt ist das eigentliche Thread-Objekt. Thread-Klassen, die die Runnable-Schnittstelle implementieren, teilen Ressourcen miteinander.

/**
 * 通过实现Runnable接口实现的线程类
 */
public class RunnableTest implements Runnable {
    private int i ;
    @Override
    public void run() {
        for(;i6ff92d8a1da739138e832cd159d76266 task = new FutureTaskc0f559cc8d56b43654fcbe4aa9df7b4a((Callablec0f559cc8d56b43654fcbe4aa9df7b4a)()->{
           int i = 0 ;
           for(;i<100;i++){
               System.out.println(Thread.currentThread().getName() + "的循环变量i的值 :" + i);
           }
           return i;
        });
       for(int i=0;i<100;i++){
           System.out.println(Thread.currentThread().getName()+" 的循环变量i : + i");
           if(i==20){
               new Thread(task,"有返回值的线程").start();
           }
       }
       try{
           System.out.println("子线程返回值 : " + task.get());
        }catch (Exception e){
           e.printStackTrace();
        }
    }
}

Zusammenfassung

Durch die oben genannten drei Methoden können sie tatsächlich in zwei Kategorien eingeteilt werden: Klassen erben und Schnittstellen implementieren. Im Vergleich zur Vererbung kann die Schnittstellenimplementierung flexibler sein und wird nicht durch den einzelnen Vererbungsmechanismus von Java eingeschränkt. Und Ressourcen können durch die Implementierung von Schnittstellen gemeinsam genutzt werden, was für Multithreads geeignet ist, die dieselbe Ressource verarbeiten. Das Thread-Wissen ist umfangreich und kompliziert, und es müssen weitere Details erlernt und beherrscht werden.

Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, Threads in Java zu erstellen? Drei Möglichkeiten zum Erstellen von Threads in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn