140 likes | 263 Views
LOENG 14 06.12.01. Lõimed. Süsteemne lõimeklass. Thread start ( ) sleep ( ) interrupt ( ). Kasutaja tehtud lõimeklass. OmaetteTegutseja public void run ( ){ < omaette tehtavad tööd > }. Protsess1. OmaetteTegutseja public void run ( ){ < omaette tehtavad tööd >
E N D
LOENG 14 06.12.01 Lõimed Lõimed
Süsteemne lõimeklass Thread start( ) sleep( ) interrupt( ) Kasutaja tehtud lõimeklass OmaetteTegutseja public void run( ){ <omaette tehtavad tööd> } Lõimed
Protsess1 OmaetteTegutseja public void run( ){ <omaette tehtavad tööd> }//run . . . OmaetteTegutseja t = new OmaetteTegutseja(...); . . . t.start( ); . . . lõim Protsess1 Protsess2 Lõimed
class HRJuhtija extends Thread{ Raam r; // juhitav raam public void run(){ for( ; ; ){ Punkt p = r.getLocation( ); // vana koht . . . // muuta p r.setLocation(p); // uus koht r.show( ); // näidata uuel kohal . . . // viivitus }//for }//run }// HRJuhtija Lõimed
Klass Mullivann Peameetod . . . Raam hR = new Raam("LENDAV HOLLANDLANE", new Point(800, 800), new Dimension(260, 60)); HRJuhtija hRJ = new HRJuhtija(hR, 1000); hRJ.start(); . . . Lõimed
lõimeklass Mull lõim joonistada( ) Thread start( ) sleep( ) interrupt( ) lõim Mull lõim joonistada( ) Hulpija mull tahvel run( ) Lõimed
import java.awt.*; // --> Rectangle, Graphics import java.util.*; // --> Random class Hulpija extends Thread{ int sammx = 2; int sammy = 2; Mull mull; Tahvel tahvel; boolean peatada; Hulpija(Mull m, Tahvel t){// konstruktor mull = m; tahvel = t; peatada = false; }//konstruktor
public void run(){ Random juhu = new Random(); Graphics g = tahvel.getGraphics(); g.setXORMode(tahvel.TAUST); g.translate(tahvel.start.x, tahvel.start.y); for(;;){ if(peatada){ return; } // kustutada sealt, kus oli mull.joonistada(g); Lõimed
// uus värv ja suurus int muuta = 15&juhu.nextInt(); if((muuta == 3) || (muuta == 7)) mull.uusVärv(); if(muuta == 7){ mull.uusVärv(); mull.width += 2; mull.height += 2; } // kui liiga suur, siis lõpetada if(mull.width > 3*mull.LAIUS){ // joonistada väiksena: mull.width = 5; mull.height = 5; mull.joonistada(g); mull.lõim = null; peatada = true; continue; } Lõimed
// uus asukoht: int suund = 3&juhu.nextInt(); if(suund != 0) suund = 2 - suund; mull.x += suund*sammx; suund = 3&juhu.nextInt(); if(suund != 0) suund = 2 - suund; mull.y += suund*sammy; Lõimed
// kui liiga vanni ääres, siis lõpetada: Rectangle r = new Rectangle(tahvel.vann); r.grow(-tahvel.vann.SERVA_ALA, -tahvel.vann.SERVA_ALA); if(!(r.intersection(mull)).equals(mull)){ // joonistada väiksena: mull.width = 5; mull.height = 5; mull.joonistada(g); mull.lõim = null; peatada = true; continue; }//if Lõimed
// joonistada uuel kohal if(mull.width < mull.LAIUS){ // kui lõhkenu pandi jälle hulpima mull.width = mull.LAIUS; mull.height = mull.KÕRGUS; } mull.joonistada(g); // viivitus: try{ sleep(100); } catch(InterruptedException e){} }//for }//run }//Hulpija Lõimed
Klass HiireKuular public void mouseClicked(MouseEvent e){ // hiireklo~psu koht: Point p = new Point(e.getX(), e.getY()); if(e.isMetaDown()){// parem klahv // leida mull, millel klo~psati Mull m = tahvel.vann.osutatudMull( p.x - tahvel.start.x, p.y - tahvel.start.y); if(m != null) tahvel.vann.hulpima(m, tahvel); return; }//if parem klahv . . . Lõimed
Klass Vann public void hulpima(Mull m, Tahvel t){ // panna mull m hulpima if(m.lõim = = null){ m.lõim = new Hulpija(m, t); m.lõim.start(); } } Lõimed