Hm, ipak nije to sto meni treba. Mozda sam se ja pogresno izrazio.
Evo stavicu kod pa mozda neko shvati gdje gresim.
Code:
public class Automobil {
public String tipAutomobila;
public String identifikacija;
public Automobil(String tip, String id) {
this.tipAutomobila = tip;
this.identifikacija = id;
}
public String print() {
return this.tipAutomobila + " " + this.identifikacija;
}
}
Ovo je klasa automobil, koja treba da sluzi samo kao identifikacija automobila.
Code:
import java.io.*;
import java.util.*;
public class NitAuto implements Runnable {
int [] staza;
Automobil auto;
int poz = 0;
NitAuto(int [] s,Automobil a) throws IOException, InterruptedException
{
Thread t = new Thread(this,"Nit automobila");
staza = new int [s.length];
staza = s;
auto = a;
t.start();
}
public void run() {
try {
while (poz != 14) {
poz++;
System.out.println(auto.print() + " poz: " + poz);
if (staza[poz] == 1) {
System.out.println("STOP!" + auto.print());
Thread.sleep(5000);
}
if (Thread.interrupted()) {
throw new InterruptedException();
}
Thread.sleep(2000);
}
System.out.println("Pobjednik je: ");
System.out.println(auto.print());
return;
} catch(InterruptedException ex)
{
System.out.println("Do kraja ima jos: " + (14-poz));
}
}
}
Ovo je ta moja nit koju sam napravio da implementira run() metodu.
Code:
import java.util.*;
import java.io.*;
public class Simulacija {
public static void main(String [] args) throws IOException, InterruptedException {
int [][] staza = new int[3][15];
for (int i=0; i<3; i++)
for (int j=0; j<15; j++)
staza[i][j] = 0;
for (int i=0; i<4; i++) {
int p1 = (int)(Math.random()*100)%3;
int p2 = (int)(Math.random()*100)%15;
staza[p1][p2] = 1;
}
//Staza
System.out.println("STAZA!");
for (int i=0; i<3; i++) {
for (int j=0; j<15; j++) {
System.out.print(staza[i][j]);
}
System.out.println();
}
System.out.println();
boolean kraj = false;
Automobil a1 = new Automobil("golf","1");
Automobil a2 = new Automobil("audi","2");
Automobil a3 = new Automobil("ford","3");
NitAuto nit1 = new NitAuto(staza[0],a1);
NitAuto nit2 = new NitAuto(staza[1],a2);
NitAuto nit3 = new NitAuto(staza[2],a3);
}
}
A ovo je simulacija trke.
Problem se javlja kada jedan automobil stigne do kraja, ispise se da je on pobjednik ali ostala dva automobila nastave trku.
Trebam napraviti da se druga dva automobila zaustave i da se ispise pozicija do koje su stigli u tom trenutku.
Dobio sam savjet da sinhronizujem ove niti i da onda posaljem notify() kada privi automobil zavrsi, ali ja to ne znam kako.
Pa ako neko moze da me uputi ili da mi napravi ispravke mog koda. Eto, unaprijed hvala.