u.a. Ressourcen begrenzung für Java-Anwendung

Status
Nicht offen für weitere Antworten.

Frokuss

Mitglied
Hallo Leute,
bin hier neu im Forum und auch ein blutiger Anfänger was Java angeht... Normalerweise programmiere ich in PHP und habe in letzter Zeit angefangen so ein klein wenig in Java-Script (jaja, ich weis, das sind zwei paar Schuhe) reinzuschnuppern.

Allerdings habe ich mir jetzt ein Projekt vorgenommen, was ein paar leichte mathematische Berechnungen machen soll (sind nur additionen und multiplikationen), welches sich aber schelcht mit PHP realisieren lässt. Habe mir jetzt vorgenommen ein kleine und einfache Oberfläche zu erstellen, bei der der Benutzer die Berechnungen Starten, Pausieren und Abbrechen lassen kann. Das Fenster mit den Butons wird schon erzeugt und auch das Fenster kann man schließen.

Nun habe ich allerdings einige Probleme...
1.) Und zwar wäre das eine, das ich nicht weis, wie ich die Ressourcen, die für das Programm reduzieren kann, so das er mir bei einer Endlosschleife (die aber vom Benutzer abgebrochen werden können soll), der Rechner nicht abschmiert. Nun habe ich leider recht wenig Ahnung, wie man das realisieren kann - aber vllt ist es über eine Zeitfunktion möglich, so das also quasi an einer bestimmten Stelle eine gewisse Zeit erst mal nichts passiert wird (aber der Computer wohl bediehnbar ist). Sprich sinngemäß:

while(true && !User_abrechen)
{
//rechne nen bischen rum <- schon etwas komplizirter mit DB zugriff etc, kommt aber später irgendwann mal
//Pausiere 10 millisekunden oder was weis ich was man da für zeiten braucht
}


vllt geht sowas, kann mir da einer weiter helfen?

2.) Desweiteren habe ich keine Ahnung, wie ich per Button, welcher in der Hauptklasse ist, in der Unterklasse, die für die Berechnungen zuständig ist das Abbrechen kann. Wie man bei 1.) sieht, soll dann die whileschleife komplett beendet werden. Demzufolge wäre bei mir ein Pause gleich einem Beenden, nur das beim Beenden auch direkt noch das Programm geschlossen wird (was bei Pause nicht ist).

Muss aber gestehen, das ich mir bisher ÜBERWIEGEND alles zusammen gegoogelt habe. Hier einmal der Code, bei dem die die Verküpfungen für den Start und das Beenden/Pausieren rein muss.
Java:
private void eingabe(String a)
{
	if(a == "Start")
	{ //ist glaube ich schlampig von mir, Strings zu vergleichen, aber geht
	//anscheined doch.. gibts da was besseres?
		a = "Programm wird ausgefuehrt";
	}
	else if(a == "Statistik")
		a = "Statistik wird erzeugt";
	else if(a == "Pause")
		a = "Programm wird angehalten";
	else if(a == "Beenden")
	{
		setVisible(false);
		System.exit(0);
	}
	anzeige.setText(a);
}

Schon mal vielen Dank im Vorraus und sorry, das ich so wenig kann... Bin übrigens für alles offen.
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
hi,
ich fange mal mit 2 kleineren sachen an (weil ich noch nicht recht verstehe was du eig. machen möchtest ;D )

a) Thread.sleep(10); //fürs pausieren
b) bei deinem code....strings werdne mit equals verglichen, da == nur die objektreferenzen vergleicht.
also eher "Start".equals(a);
 

Landei

Top Contributor
- true && bla ergibt immer bla, also while(!User_abbrechen)
- Variablen und Methoden werden klein geschrieben, außerdem ist "CamelCase" Standard, also while(! userAbbrechen)

Das Abbrechen geht ungefähr so (eine von mehreren Varianten):
Java:
class HauptKlasse {
   Unterklasse unterKlasse = new UnterKlasse();
   JButton button = new JButton("Drück mich ganz fest");
    
   public void irgendeineFunktionDieDieGuiInitialisiert() {
      ...
      irgendEinPanel.add(button);
      button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ae) {
             unterKlasse.abbrechen();
         } 
      }); 
      ...
   }
}


public class UnterKlasse {
   public void abbrechen() {
      ... setze eine Abbruch-Variable oder so
   }
}
 
Zuletzt bearbeitet:

Marco13

Top Contributor
*Kristallkugel auspackt*

Du hast vermutlich einen Button, und dort hängt ein ActionListener dran, und in der "actionPerformed"-Methode machst du direkt oder indirekt die lange dauernden Berechnungen? Falls dem so ist: Solange er in der "actionPerformed"-Methode hängt, kann er nicht neu Zeichnen, und das GUI reagiert nicht mehr. Und da hilft auch kein "Thread.sleep(10)", weil dort der "Event Dispatch Thread" schlafen gelegt wird (also gerade der, der sich um Neuzeichnen und Eingaben kümmern sollte). Aufwändige Berechnungen sollten in einen eigenen Thread ausgelagert werden. Den kann man dann auch auf unterschiedliche Arten pausieren oder anhalten - und Pausieren und anhalten muss unterschiedlich behandelt werden.

Noch ein bißche Code. Zum kommentieren ist es jetzt aber schon ein bißchen spät
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


class SampleTask implements Runnable
{
    private boolean paused = false;
    private boolean stopped = false;


    public synchronized void setPaused(boolean paused)
    {
        this.paused = paused;
        notifyAll();
    }

    public synchronized void stop()
    {
        this.stopped = true;
        notifyAll();
        System.out.println("Stopped");
    }


    public void run()
    {
        stopped = false;

        while (!stopped)
        {
            //--->--- Compute some stuff here
            System.out.println("Running...");
            try
            {
                Thread.sleep(500);
            }
            catch (InterruptedException e)
            {
                Thread.currentThread().interrupt();
            }
            //---<--- Compute some stuff here



            while (paused && !stopped)
            {
                synchronized(this)
                {
                    System.out.println("Paused, waiting...");
                    try
                    {
                        wait();
                    }
                    catch (InterruptedException e)
                    {
                        Thread.currentThread().interrupt();
                    }
                }
            }
        }
    }


}



class ThreadSample extends JFrame
{
    public static void main(String args[])
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                new ThreadSample().setVisible(true);
            }
        });
    }


    public ThreadSample()
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new GridLayout(1,3));

        final SampleTask sampleTask = new SampleTask();

        JButton b = null;

        b = new JButton("Start");
        b.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                Thread thread = new Thread(sampleTask);
                thread.start();
            }
        });
        getContentPane().add(b);

        final JToggleButton tb = new JToggleButton("Pause");
        tb.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                sampleTask.setPaused(tb.isSelected());
            }
        });
        getContentPane().add(tb);

        b = new JButton("Stop");
        b.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                sampleTask.stop();
            }
        });
        getContentPane().add(b);

        pack();

    }

}
 

Frokuss

Mitglied
Ich danke euch dreien für die Posts, ich muss mich da jetzt mal eben etwas reinhängen, da es doch etwas zu fortschrittlich für mich ist und ich nicht alles, bzw zu wenig davon verstehe. Werde mich in kürze noch mal melden.
 

Frokuss

Mitglied
So, nachdem ich etwas Zeit hatte mir das alles anzugucken, ist das Ergebnis bitter... Was ist hier in Java ein Thread? Soweit ich das verstanden habe, ist das mein weiterer Prozess der gestartet wird, aber auf den gleichen Speicher wie der "Main-Thread" zugreift. Ist das soweit richtig?
So und dann kommen noch mal zwei weitere definitiv simple Fragen... sorry!
Das erste, wenn ich mehrere classen habe - sprich also auch mehrere Dateien, dann rufe ich doch in der Hauptklasse die nebenklasse so auf: Klassenname.methode(variable);
also wenn ich die klassen hauptklasse (main methode) und die klasse nebenklasse (irgendwelche methoden) habe, würde das klappen oder?
Und das zweite, wie erstelle ich mir so einen thread? Habe irgendwie mir nichts nützliches gefunden..
Vielen dank schon mal für weitere Hilfe :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
W Java in Exe Datei umgewandelt, Ressourcen fehlen (Bilder und Audiodateien) Java Basics - Anfänger-Themen 1
P Ressourcen für JSON & API Informationen? Java Basics - Anfänger-Themen 1
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
R Ressourcen in JAR-Dateien Java Basics - Anfänger-Themen 2
V Ressourcen aus Ordner nutzen Java Basics - Anfänger-Themen 5
U Ressourcen im Jar-File Java Basics - Anfänger-Themen 2
G allgemeine Ressourcen-Verwaltung... Java Basics - Anfänger-Themen 3
G ressourcen in anderem Package Java Basics - Anfänger-Themen 9
E begrenzung des platzes im heap Java Basics - Anfänger-Themen 4
StickToFreak Mit GameLoop "Spielfeld-Begrenzung" Java Basics - Anfänger-Themen 24
G Begrenzung bei PrintWriter? Java Basics - Anfänger-Themen 6
M Gibt es eine Begrenzung der Anzahl der Objekte? Java Basics - Anfänger-Themen 5
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M GUI für Vier-Gewinnt. Java Basics - Anfänger-Themen 4
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
Ostkreuz Counter für Booleanwerte Java Basics - Anfänger-Themen 8
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
M generate Methode für Streams Java Basics - Anfänger-Themen 6
I Datenmodell für "Tags" Java Basics - Anfänger-Themen 6
Lion.King for-Kontrollstruktur für Pyramide Java Basics - Anfänger-Themen 8
B Mit Countdown Midnestdauer für Teilaufgabenerledigung erzwingen Java Basics - Anfänger-Themen 8
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
javamanoman Java für Online Banking Java Basics - Anfänger-Themen 12
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
I SQL / JPA Query für StartDate und EndDate Java Basics - Anfänger-Themen 1
T getMethode für ein Array Java Basics - Anfänger-Themen 2
Fats Waller Farben mixen für den Hintergrund ? Java Basics - Anfänger-Themen 1
H Suche jemanden für kleine Uni-Abgabe/ mit Vergütung Java Basics - Anfänger-Themen 1
K Für was braucht man die left und right shift operatoren? Was bringen die, also welchen Zweck haben die? Java Basics - Anfänger-Themen 15
N Api nur für Textdatein (.txt) Java Basics - Anfänger-Themen 2
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
R Ist Java das Richtige für mich? Java Basics - Anfänger-Themen 4
E Mittelquadratmethode für Hexadezimalzahlen Java Basics - Anfänger-Themen 1
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
O Wie erstelle ich eine Instanz in einer Klasse für die ich die Instanz will? Java Basics - Anfänger-Themen 4
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
L Konzept für Quiz Java Basics - Anfänger-Themen 33
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
L loop für Namen Java Basics - Anfänger-Themen 11
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4
L Methode für Zweidimensionale Arrays Java Basics - Anfänger-Themen 4
Kanaska Datentyp für Zahlenbereiche Java Basics - Anfänger-Themen 7
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
U BestPractise für Deployment unter Windows gesucht Java Basics - Anfänger-Themen 12
lilrack UML Diagramm für Parkplatzverwaltung Java Basics - Anfänger-Themen 8
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
B Generische Typen für dynamisches Formular Java Basics - Anfänger-Themen 3
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
T Start-Activity für Java Maven Web-Anwendung festlegen Java Basics - Anfänger-Themen 2
T Alternative für switch case Java Basics - Anfänger-Themen 1
M Java Einstellung von Apache POI für MS Word Erstellung mit Eclipse Java Basics - Anfänger-Themen 6
L Compiler-Fehler SupressWarning für clone() Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben