JAVA 4 - Fachbereich Maschinenbau - FH

Werbung
Fachhochschule Stralsund
Fachbereich Maschinenbau
Lehrgebiet Informatik
Prof. Dr.-Ing.Ch.Wahmkow
Arbeitsblätter für die Lehrveranstaltung OOP
JAVA 4
IV. Threads, Audiodateien, Bilder, Datumsfunktion, Aufruf weiterer
HTML-Seiten, Dateiarbeit und Weitergabe von Programmen
Threads
Benutzt ein Applet mehrere Prozesse, die zur gleichen Zeit ablaufen sollen, muss das
Betriebssystem multiprozessorfähig sein. Bei einem Einprozessorsystem (Windows) werden
alle Prozesse stückchenweise reihum verarbeitet. Das muss organisiert werden.
Beispiel: ständige Zeitanzeige
Die Zeitanzeige ist in einer Endlosschleife programmiert. Die CPU kann auf nichts anderes
mehr reagieren und somit sind auch keine Ereignisse mehr auswertbar.
Also muss das Programm in Threads (Prozesse) eingeteilt werden, um den Programmablauf
kurzzeitig zu unterbrechen, um reagieren zu könnnen, d.h. Ereignisse werden in der kurzen
Pause wieder wahr genommen.
Ein Thread wird erzeugt mit der start-Methode, zerstört mit der stop-Methode.
Die Arbeit beginnt in der Methode run. Run wird von start aufgerufen. In run steckt der
eigentliche Programmcode des Threads.
Notwendige Änderungen im Programm:
-
Signatur des Applets um implements Runnable; das ist die Schnittstelle für das verhalten
eines Threads
z.B. public class zeit extends Applet implements Runnable
-
Instanzvariable für den Thread deklarieren
z.B. Thread runner;
-
Start- Methode aufnehmen
z.B.:
public void start()
{
if (runner==null)
{
runner=new Thread(this);
runner.start();
} //Ende if
} //Ende start
___________________________
Arbeitsblätter zur Vorlesung OOP Java; Teil 4
Seite: 1
-
-
Stop- Methode aufnehmen
z.B.:
public void stop()
{
if (runner!=null)
{
runner.stop();
runner=null;
} //Ende if
} //Ende stop
Run- Methode aufnehmen
z.B.:
public void run()
{
while (true)
{
...
Hier steckt der gesamte Algorithmus für den Thread.
...
} //Ende While
} //Ende run
Weitere Aktionen mit dem Thread sind möglich:
Die Methode suspend() hält den Thread an, aber vernichtet ihn nicht. So kann eine Bewegung
angehalten werden.
z.B. : runner.suspend();
Die Methode resume() hebt die Suspendierung auf.
z.B.: runner.resume();
Dar Hauptthread kann eingeschläfert werden und damit im Programm eine Pause erzeugt
werden. Hier muss eine Exception in einem try-catch -Block abgefangen werden:
z.B.:
try {Thread.sleep(1000);}
catch (InterruptedException e) {}
... hier schläft der Thread (das Hauptprogramm ) eine Sekunde lang.
Einbinden von Audiodateien
play(getCodeBase(), "Audiodatei.au"); // Es werden nur Audiodateien im au-Format gelesen.
___________________________
Arbeitsblätter zur Vorlesung OOP Java; Teil 4
Seite: 2
Einbinden von Bildern
Deklarieren des Bildes:
Image Bild;
Bild zuweisen:
Bild=getImage(getCodeBase(),bild.gif);
Bild darstellen in der Paint-Methode:
g.drawImage(Bild,xpos,ypos,this);
Datums-und Zeitfunktion
Zusätzliche Bibliothek einbinden:
import java.util.Date;
import java.util.*;
den Kalender und die Zeitkomponemten deklarieren:
GregorianCalendar cal;
int stunde, minute, sekunde;
den Kalender initialisieren und die Komponenten zuweisen:
cal=new GregorianCalendar();
stunde=cal.get(Calendar.HOUR_OF_DAY);
minute=cal.get(Calendar.MINUTE);
sekunde=cal.get (Calendar.SECOND);
Die Zeit ausgeben:
g.drawString(String.valueOf(stunde)+':'+String.valueOf(minute)+':'+
String.valueOf(sekunde),10,50);
Das alles läuft natürlich in einem Thread, damit man das Programm auch wieder beenden
kann.
Aufruf weiterer HTML-Seiten aus einem Applet
zusätzliche Bibliotheken einbinden:
import java.net.*;
den Appletcontext deklarieren:
AppletContext AC;
Appletkontext anlegen in der init-Methode:
AC=getAppletContext();
Aufruf der neuen URL (Exception im try-catch-Block abfangen):
try
{
AC.showDocument(new URL("http://www.mb.fh-stralsund.de"));
___________________________
Arbeitsblätter zur Vorlesung OOP Java; Teil 4
Seite: 3
}
catch(MalformedURLException x){showStatus(x.toString());}
Dateiarbeit mit einfachen Textdateien
Einbinden zusätzlicher Bibliotheken:
Import java.io.*;
Import java.util.*;
Dateivariable deklarieren:
BufferedReader f;
// liest Zeichen von Datei (keine Bytes)
BufferedWriter w;
// schreibt Zeichen auf Datei
Datei zuweisen und öffnen:
f=new BufferedReader(new FileReader("lesen.txt"));
w=new Bufferedwriter(new FileWriter("schreiben.txt"));
Zeile lesen bzw. schreiben:
Line=f.readline(); Line von Typ String vereinbaren ! Die Zeile wird auf einen String
gelesen
Readline verursacht eine IOException und muss demzufolge in einem try-catch-Block
abgefangen werden.
w.write (Parameterliste zum Schreiben angeben);
Lesen bis zum Dateiende:
If ((Line=f.readLine())!=null) {Hier erfolgt das Auslesen der Datensätze}
Stehen mehrere Feldelemente in einem Datensatz muss man das Trennzeichen vereinbaren :
StringTokenizer st=new StringTokenizer(Line,","); // hier ist das (,) das Trennzeichen
und dann die einzelnen Werte einlesen:
textField1.setText(st.nextToken());
textField2.setText(st.nextToken());
Datei schließen nicht vergessen:
f.close();
w.close();
Weitergabe von Java-Programmen und Applets an die Browser
Der Jbuilder bindet eigene Borland -Bibliotheken in ein Programm mit ein. Diese müssen an
die Browser mit übergeben werden. Dafür gibt es im Jbuilder den Weitergabeexperten.
Menü Experten
Weitergabeexperte
Das Dialogfeld stellt man wie folgt ein:
___________________________
Arbeitsblätter zur Vorlesung OOP Java; Teil 4
Seite: 4
Achten Sie dabei auf das richtige Verzeichnis. Am besten ist es, wenn Sie ein
Unterverzeichnis im Projektverzeichnis anlegen. Hier im Beispiel heißt das Verzeichnis
weiter
___________________________
Arbeitsblätter zur Vorlesung OOP Java; Teil 4
Seite: 5
Herunterladen