CATEGORII DOCUMENTE |
Firele de executie, numite si thread-uri, sunt un lucru foarte important pentru animatie - ele dau posibilitatea tratarii in paralel de Java a mai multor activitati.
Un fir de executie este o parte a unui program care este configurata sa ruleze in timp ce restul programului executa altceva.
Prin separarea ainmatiei pe un fir de executie restul aplicatiei poate rula altceva.
Odata cu utilizarea firelor de executie trebuie sa facem unele modificari in fisierul nostru clasa:
- adaugam la declarare 'implements Runnable'
- se creaza un obiect Thread in care pastram firul
- suprascriem metoda start() a applet-ului pentru a crea si lansa firul de executie
- suprascriem metoda stop() pentru a seta firul care se executa la null
- cream metoda run() care contine instructiunile ce fac appletul sa ruleze continuu animatia
Runnable este o interfata ; ea reprezinta sistemul prin care o clasa poate mosteni metode pe care altfel nu le-ar fi mostenit de la superclasele sale.Aceste metode pot fi astfel disponibile oricarei metode care are nevoie de ele.Runnable contine o metode run() de care avem nevoie pentru a porni un fir de executie si de aceea trebuie implementata aceasta interfata in cazul nostru.
Thread este o clasa din pachetul java.lang - asa incat nu avem nevoie de o instructiune import pentru a o utiliza.De obicei obiectul de tip Thread se creaza in metoda start() si va avea o valoare null pana la crearea efectiva a obiectului - creare care se face tot in metoda start().Pentru a rula un fir de executie creat avem nevoie de metoda sa start():
obiect_thread.start();
Apelarea acestei metode duce la apelarea metodei run() - mostenita prin interfata Runnable.
Metoda run() este cea mai importanta a appletului devenit fir de executie.Ea este folosita pentru a controla secventele animatiei prin stabilirea tuturor operatiilor legate de desenare si de modificarile intre secventele de animatie.
Dupa definirea in metoda run() a comportamentului necesar firului de executie trebuie sa definim si metoda stop() - pentru oprirea appletului.
Acest lucru - oprirea - il putem face prin atribuirea valorii null obiectului Thread ; de fapt acest lucru nu duce la oprirea automata a executie firului dar problema se rezolva prin metoda run() care va fi creata astfel incat sa permita rularea doar daca obiectul Thread nu este null.
Pentru a clarifica problematica firelor de executie vom prezenta un applet care creaza un ceas - o animatie simpla - cu actualizari constante.
In cadrul appletului vom folosi un ciclu while care ar putea fi periculos in conditii normale:acest ciclu ar monopoliza resursele si practic nu am vedea nimic pe ecran deoarece Java ar astepta la infinit oprirea ciclului.
Appletul va defini un anumit font pentru afisare si un obiect de tip Date care pastreaza data curenta.Metodele start() si stop() au rolul de a porni si respectiv opri firul de executie.
Metoda run() este cea mai importanta - cea care realizeaza de fapt toata animatia.Aici vom avea si buclucasul ciclu while de mai sus ; primul lucru facut in ciclu este apelarea repaint() pentru redesenarea ferestrei.Tot aici vom intalni si o noua metoda:sleep().Aceasta metoda a clasei Thread determina o pauza in executie.Daca nu s-ar folosi aceasta metoda appletul ar rula la viteza maxima, lucru care poate sa nu fie conform cu dorinta programatorului.Instructiunile try si catch vor apare aici pentru tratarea erorilor si pentru moment le putem ignora.
Metoda paint() a appletului creaza o noua instanta a clasei Date - pentru folosirea acestei clase trebuie sa o importam, ea fiind inclusa in java.util.De asemenea apare si metoda toString() a clasei Date, necesara pentru afisarea ca sir a datei si orei.La fiecare apelare a metodei paint() vom avea astfel un nou obiect Date care va tine ora si data curente.
Sa vedem in continuare codul sursa al appletului descris anterior :
import java.awt.*;
import java.util.*;
public class CeasDigital extends java.applet.Applet implements Runnable
}
public void stop()
}
public void run() catch (InterruptedException e)
}
}
public void paint(Graphics ecran)
}
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1133
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved