Heim  >  Artikel  >  Java  >  In Java entwickelte Multithreading-Methoden und Beispiele

In Java entwickelte Multithreading-Methoden und Beispiele

WBOY
WBOYOriginal
2023-06-18 18:30:08824Durchsuche

Java ist eine beliebte Programmiersprache und eine der am weitesten verbreiteten Multithread-Programmiersprachen. Unter Multithreading versteht man, dass ein Programm mehrere Aufgaben gleichzeitig ausführen kann, wodurch die Ausführungseffizienz des Programms verbessert werden kann. In diesem Artikel werden Multithreading-Methoden und Beispiele in der Java-Entwicklung vorgestellt.

  1. Das Grundkonzept des Java-Multithreadings

Multithreading in Java besteht darin, Aufgaben im Code durch die Erstellung mehrerer Threads abzuschließen. In einem Single-Thread-Programm wird jede Anweisung nacheinander ausgeführt, während in einem Multi-Thread-Programm verschiedene Threads unterschiedliche Anweisungen gleichzeitig ausführen können, was die Ausführungseffizienz des Programms verbessert.

In Java werden Threads über die Thread-Klasse implementiert. Jeder Thread ist eine unabhängige Ausführungseinheit mit eigenem Ausführungsstapel und Ausführungskontrollfluss. Threads in Java werden in Benutzer-Threads und Daemon-Threads unterteilt. Wenn die Ausführung aller Benutzer-Threads abgeschlossen ist, beendet auch der Daemon-Thread die Ausführung.

  1. So implementieren Sie Multithreading in Java

Multithreading in Java kann durch Implementierung der Runnable-Schnittstelle oder durch Erben der Thread-Klasse implementiert werden. Durch die Verwendung der Runnable-Schnittstelle kann eine Wiederverwendung von Code erreicht werden, und durch die Verwendung der Thread-Klasse kann eine bessere Kontrolle erreicht werden.

2.1 Implementieren Sie die Runnable-Schnittstelle

Um die Runnable-Schnittstelle zu verwenden, müssen Sie die run()-Methode implementieren und den von Multithreads auszuführenden Code in die run()-Methode schreiben. Um die Runnable-Schnittstelle verwenden zu können, müssen Sie ein Thread-Objekt erstellen und den Thread über das Thread-Objekt starten.

Der Beispielcode lautet wie folgt:

public class MyRunnable implements Runnable {

    @Override
    public void run() {
        //多线程执行的代码
        System.out.println("MyRunnable start");
    }

    public static void main(String[] args) {

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

    }
}

2.2 Erben der Thread-Klasse

Das Erben der Thread-Klasse erfordert das Überschreiben der run()-Methode und das Schreiben des Codes, der von mehreren Threads ausgeführt werden soll, in der run()-Methode.

Der Beispielcode lautet wie folgt:

public class MyThread extends Thread{

    @Override
    public void run() {
        //多线程执行的代码
        System.out.println("MyThread start");
    }

    public static void main(String[] args) {

        MyThread t = new MyThread();
        t.start();

    }
}
  1. Gemeinsame Methoden für Multithreading in Java

Multithreading in Java kann mit einigen gängigen Methoden betrieben werden. Die folgenden Methoden werden häufig verwendet:

3.1 start()

start()-Methode ist eine Methode zum Starten eines Threads.

Der Beispielcode lautet wie folgt:

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

3.2 join()

join()-Methode ist eine Methode, die darauf wartet, dass der Thread die Ausführung abschließt.

Der Beispielcode lautet wie folgt:

Thread t = new Thread();
t.start();
t.join();

3.3 Die Methode „sleep()“

sleep() ist eine Methode, um den Thread für einen bestimmten Zeitraum schlafen zu lassen.

Der Beispielcode lautet wie folgt:

Thread.sleep(1000);
  1. Synchronisierungsprobleme beim Java-Multithreading

Mehrere Threads in Java führen zu Synchronisierungsproblemen, und wenn mehrere Threads gleichzeitig auf dieselbe Ressource zugreifen, kommt es zu Konflikten. Java bietet das synchronisierte Schlüsselwort und die Lock-Schnittstelle, um dieses Problem zu lösen.

4.1 synchronisiertes Schlüsselwort

Das synchronisierte Schlüsselwort kann zum Ändern eines Objekts oder einer Methode verwendet werden, um sicherzustellen, dass nur ein Thread dieses Objekt oder diese Methode gleichzeitig ausführen kann.

Der Beispielcode lautet wie folgt:

public class MyThread implements Runnable{

    private static int count = 0;

    @Override
    public synchronized void run() {
        for (int i = 0; i < 10000; i++) {
            count++;
        }
    }

    public static void main(String[] args) throws InterruptedException {

        MyThread r1 = new MyThread();
        MyThread r2 = new MyThread();

        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);

        t1.start();
        t2.start();

        t1.join();
        t2.join();

        System.out.println(count);

    }
}

4.2 Sperrschnittstelle

Die Sperrschnittstelle bietet eine flexiblere Sperrmethode und ist raffinierter als das synchronisierte Schlüsselwort.

Der Beispielcode lautet wie folgt:

public class MyThread implements Runnable{

    private static int count = 0;

    private Lock lock = new ReentrantLock();

    @Override
    public void run() {

        lock.lock();
        try {
            for (int i = 0; i < 10000; i++) {
                count++;
            }
        } finally {
            lock.unlock();
        }

    }

    public static void main(String[] args) throws InterruptedException {

        MyThread r1 = new MyThread();
        MyThread r2 = new MyThread();

        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);

        t1.start();
        t2.start();

        t1.join();
        t2.join();

        System.out.println(count);

    }
}
  1. Fazit

Multithreading in Java kann die Ausführungseffizienz des Programms verbessern und wird häufig in der Entwicklung verwendet. In diesem Artikel werden die grundlegenden Konzepte, Implementierungsmethoden, allgemeinen Methoden und Lösungen für Synchronisierungsprobleme beim Java-Multithreading vorgestellt. Ich hoffe, dass es für Studenten hilfreich sein wird, die Java entwickeln.

Das obige ist der detaillierte Inhalt vonIn Java entwickelte Multithreading-Methoden und Beispiele. 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