Multitasking oder Multithread-Programmierung mit Java

Wenn wir eine Software programmieren, müssen wir die Ausführungszeit und die verschiedenen vom Benutzer ausgeführten Aufgaben berücksichtigen, damit sie nicht zu langsam sind. In einigen Fällen wurden Bildschirme verwendet, um den Benutzer durch Meldungen wie “Laden …” abzulenken mehrere Minuten … ” und andere bekannte Nachrichten.

. Die Software nutzt die meiste Zeit den gesamten RAM- und CPU-Speicher, um andere Aufgaben zu blockieren oder sogar den Computer vollständig zu aktivieren . Dies liegt daran, dass der Prozess auf der ersten oder zweiten Ebene ausgeführt wird, die alle Ressourcen verbraucht und die anderen Prozesse blockiert. Eine Möglichkeit zur Lösung dieses Problems besteht in der Verwendung von Multitasking, wobei die Tatsache ausgenutzt wird, dass Computer über mehr als einen Prozessor verfügen. Wenn wir unsere Anwendung mit Multitasking-Methoden programmieren, wird der Computer nicht blockiert, obwohl er langsamer ist, aber der Benutzer kann weiterhin eine andere Anwendung ausführen, da die Prozessoren auf verschiedene parallel laufende Threads reagieren können.

Ein Thread ist ein Teil des Codes, der die Eigenschaft hat, parallel ausgeführt zu werden, dh gleichzeitig mit einem anderen Teil des Codes. Dies hat auch die Einschränkung der Hardware, da Multitasking von der Anzahl der Kerne abhängt, über die der Prozessor verfügt. Wenn er also zwei Kerne verfügt, kann er zwei Aufgaben gleichzeitig ausführen.
Es gibt zwei Ausführungsebenen für eine Software, die erste Ebene und die zweite Ebene

Der Vordergrund oder Vordergrund ist das, was der Benutzer auf seinem Bildschirm sieht , der mit Schaltflächen, Fenstern, Textfeldern, Bildern usw. arbeitet. Die häufigsten Berechnungen werden in der ersten Ebene oder im Haupt-Thread der Anwendung durchgeführt. Hierbei ist zu berücksichtigen, dass der Benutzer bei einem sehr umfangreichen Design mit zu vielen Grafiken das Gefühl hat, dass die Anwendung langsam ist und nicht auf Multitasking zurückzuführen ist, sondern auf die Ressourcen, die für die Anzeige der einzelnen Bildschirme erforderlich sind.

See also  Wie erstelle ich einen Screenshot in Windows 10?

, donde en caso que un programa o software bloquea el dispositivo por màs de 5 segundos, lanza un mensaje de advertencia o en el peor de los casos el programa se cerrará informando que la aplicación se ha detenido. Derzeit warnen viele Softwareprogramme, wenn eine Anwendung zu viele Ressourcen verbraucht oder die Stabilität des Systems gefährdet, und andere schließen die Anwendung, die Probleme verursacht, wie z. B. Android , wenn ein Programm oder eine Software das Gerät länger als 5 Sekunden blockiert, und starten a Warnmeldung oder im schlimmsten Fall wird das Programm geschlossen und informiert, dass die Anwendung gestoppt wurde. Wenn eine Website in Firefox sehr langsam wird, werden auch Warnmeldungen angezeigt, die das Skript nicht reagiert oder das Schließen erzwingen.

In der zweiten Ebene oder im zweiten Hintergrund werden die Threads oder das Multitasking verarbeitet . Während ein Bildschirm angezeigt wird, sollten wir in der zweiten Ebene alle schweren Prozesse ausführen. Hier sieht der Benutzer nicht, was passiert. Hier werden die Softwaredienste, die Netzwerkverbindungen, die Verbindungen zu Datenbanken und die komplexen Berechnungen ausgeführt usw. Hier können die Prozesse so lange dauern, wie sie benötigt werden, während der Benutzer andere Aufgaben ausführt.

So erstellen Sie eine Multithread-Anwendung

Die erste Methode zum Erstellen eines Threads besteht darin, die in Java bereits vorhandene Thread- Klasse zu erweitern und dann den Code hinzuzufügen, den wir innerhalb der run () -Methode ausführen möchten

 Klasse Miaplication erweitert Thread { public void run () { // Auszuführender Prozess } System.out.println ("Dieser Prozess ist abgeschlossen"); } 

In diesem Fall haben wir eine Miaplication definiert, die die Thread-Klasse erweitert und die run () -Methode verwendet, um die Ausführungsfunktionalität in dieser Klasse bereitzustellen. Durch die Erweiterung der Thread-Klasse können die Methoden und Variablen der übergeordneten Klasse vererbt werden.

Starten Sie einen Thread oder Thread

Java-Anwendungen führen beim Start die Methode main () aus. Dort werden auch die für unsere Anwendung erforderlichen Threads initiiert, es sei denn, wir benötigen Anforderungen, die von einem Ereignis in Betrieb genommen werden.

See also  Wie installiert man Wine unter Ubuntu 19.04

Angenommen, wir haben eine Klasse, die sich von Thread aus erstreckt, und erstellen einen neuen Thread und starten ihn

 public static void main (String [] args) { Fadenklasse A = neuer Faden ("Faden A"); Gewindeklasse B = neues Gewinde ("Gewinde B"); threadA.start (); threadB.start (); } 

Die Werte, die wir jedem Thread zuweisen, bilden den Namen jedes Threads oder Threads, der gestartet werden soll.

Thread-Ausführung oder Thread anhalten

Möglicherweise müssen wir die Ausführung des Threads stoppen, wenn wir eine andere Aufgabe ausführen müssen, um ihn fortzusetzen. Dann verwenden wir die suspend () -Methode. Sie kann mit der start () -Methode fortgesetzt werden.

 thread.suspend (); 

Stoppen Sie die Ausführung eines Threads oder Threads

Mit der stop () -Methode können wir die Ausführung des Threads stoppen. Wir müssen berücksichtigen, dass dies mit der start () -Methode nicht fortgesetzt werden kann. Wenn die im Thread verwendeten Variablen nicht gepaart sind, wird das mit new erstellte Thread-Objekt markiert, um es zu entfernen, und der Garbage Collector gibt den verwendeten Speicher frei.

 thread.stop (); 

Möglicherweise müssen wir auch feststellen, ob ein Thread oder ein Thread weiterhin funktioniert, auch wenn der ihm zugewiesene Prozess beendet ist. Wir können die Methode isAlive () verwenden.

 thread.isAlive (); 

Sehen wir uns ein Beispiel für eine Multithread-Anwendung an, die mit Netbeans entwickelt wurde. Zunächst erstellen wir eine Anwendung.

Programmierung-multitarea-java.jpg

In diesem Fall vergeben wir einen Namen für unser Projekt. Thread Beim Start der Klasse hilo.java haben wir standardmäßig die main-Methode

 Paket-Threads; öffentliche Klasse Hilos { public static void main (String [] args) { // Alle Code-Anwendungslogik hier } } 

Nun werden wir eine Klasse hinzufügen, die unsere Threads verarbeitet. Wir gehen davon aus, dass wir drei Bereiche eines Unternehmens haben: Kundenbereich, Zahlungsbereich und Verkaufsbereich und jeder muss 20 Vorgänge entweder Verkauf oder Kundenservice oder Zahlungen und alle müssen von einem Server verarbeitet werden.

See also  Festlegen der statischen IP-Adresse oder von DHCP in Ubuntu 18.04

Wir werden dann die Klasse erstellen, die von der Thread-Klasse ausgeht und ThreadProcessor heißt

 Paket-Threads; public class Procesarhilo erweitert Thread { // Die Nachrichtenvariable ist ein Parameter, den wir dem Bereich zuweisen, den wir bearbeiten String message; public Procesarhilo (String mensaje) { this.message = message; } // Die run Funktion führt die Threads aus öffentlicher nichtiger Lauf () { für (int i = 1; i <= 20; i ++) { // Wir zeigen den Bereich, der gerade bearbeitet wird System.out.println (message + "" + i); // Wir zeigen eine Warnung, dass der Thread die Verarbeitung beendet hat System.out.println ("Der Prozess:" + "" + i + "beendet"); } } public void AssignMessage (String message) { this.message = message; } } 

Dann gehen wir zur Hauptklasse von threads.java und instanziieren die Threads, die verarbeitet werden:

Programmierung-Multitasking-java2.jpg

Dann führen wir das Programm aus und sehen in der Textausgabe, wie die Threads ausgeführt werden. Das Ergebnis ist das Folgende:

Programmierung-Multitasking-java3.jpg

Lassen Sie uns analysieren, wie die Threads verarbeitet wurden:

Kundenbereich Prozess 1
Kundenbereich Prozess 2
Kundenbereich Prozess 3
Kundenbereichsprozess 4
Kundenbereichsprozess 5
Kundenbereichsprozess 6
Kundenbereichsprozess 7
… ..
Kundenbereich Prozess 16 – Der Prozess: 16 abgeschlossen

Bis der Client 16 sequentiell abgearbeitet wird, beginnt hier jedoch der Bezahlvorgang
Zahlungsbereichsprozess 1

Zahlungsverkehrsabwicklung 10
Bis der Zahlungsvorgang 10 ausgeführt wird und dann der Verkaufsprozess beginnt
Verkaufsbereichsprozess 1

Verkaufsbereichsprozess 15
In Vorgang 15 wird der Zahlungsvorgang 11 bis zum Ende fortgesetzt
Zahlungsbereichsprozess 11

Zahlungsbereichsprozess 20

Fahren Sie dann mit dem Client-Prozess fort, in dem ich gehe, und bis zum Ende
Kundenbereichsprozess 17

Kundenbereichsprozess 20
Verkaufsbereichsprozess 16
Verkaufsbereichsprozess 20

Schließlich wird der Verkaufsprozess bis zum Ende mit allen Threads fortgesetzt, sodass wir sehen können, wie die 60 zugewiesenen Aufgaben nicht nacheinander ausgeführt wurden, sondern für einen kurzen Zeitraum die Kontrolle über die Ressourcen übernahmen, damit alle Aufgaben ausgeführt werden können Multitasking

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *