Koda in podatki |
Tek programa: ena nit |
Dve niti |
| Večnitnost je eden osnovnih konceptov Jave. V vsaki Java aplikaciji ali apletu lahko paralelno teče več niti, ki si delijo procesorski čas; | |||||||
| Java podpira kontrolo nad nitmi (zaganjanje, ustavljanje,...), kot tudi kontrolo nad prioriteto izvajanja posameznih niti; | |||||||
nit
lahko v Javi naredimo:
|
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Nit1 extends Applet implements Runnable {
Thread nit=null;
int w, h;
int x, y;
int radius = 20;
int dx , dy;
//***************************************************
public void init(){
x = radius; y = radius;
dx
= 1; dy = 1;
w
= this.getSize().width;
h
= this.getSize().height;
}
//***************************************************
public void paint(Graphics g){
g.setColor(Color.blue);
g.fillRect(0,0,w,h);
g.setColor(Color.yellow);
g.fillOval(x-radius,y-radius,
2*radius, 2*radius);
}
//*****************************************************
public void start(){
if(nit==null){
nit
=new Thread(this);
nit.start();
}
}
//*****************************************************
public void run(){
while(nit != null){
try {Thread.sleep(10);}catch(InterruptedException
e){}
x = x + dx;
y = y + dy;
if (x > (w - radius))
{
x = w - radius; dx = -1;
}
if (y > (h - radius))
{
y = h - radius; dy = -1;
}
if (x < radius)
{
x = radius; dx = 1;
}
if (y < radius)
{
y = radius; dy = 1;
}
repaint();
}
}
//*****************************************************
public void stop(){
if(nit != null) nit.stop();
nit=null;
}
}
![]()
Primer aplikacije, ki poleg main ustvari
še pet niti, od katerih vsaka izpisuje števila od 1000 do 0. Z opazovanjem
izpisa lahko vidimo, kako JVM preklaplja med nitmi.
class SimpleThread extends Thread { // razred niti
private int countDown = 1000;
private int threadNumber;
private static int threadCount = 0;
public SimpleThread() { // v konstruktorju si le zapomnimo številko niti, da jih razlikujemo med seboj
threadNumber = ++threadCount;
System.out.println("Making " + threadNumber);
}
public void run() { // run vsebuje kodo niti; tu preprosto izpisujemo števila v zanki
for (int i=countDown;i>=0;i--) {
System.out.println("Thread " + threadNumber + "(" + i + ")");
}
}
}
class test {
public static void main(String[] args) {
for(int i = 0; i < 5; i++)
// ko naredimo instanco nitnega razreda, in pokličemo start se nit zažene - izvede se metoda run
new SimpleThread().start();
System.out.println("All Threads Started");
}
}