Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Taxi Trondheim AS fungerer på følgende måte:
En døgnåpen taxisentral tar i mot henvendelser fra kunder, avklarer hvilken tjeneste kunden vil ha (vanlig taxi, maxitaxi, tidspunkt for henting, osv.), kontakter en passende taxi og overlater kunden til taxisjåføren. Taxisjåføren henter så kunden, og kjører dit kunden ønsker å dra. Når kunden er framme, slippes vedkommende av og taxisjåføren stopper for å vente på en ny oppringning fra taxisentralen. Taxi Trondheim AS har mange taxier som kan kjøre mange kunder samtidig.

I dette eksempelet vil hele Taxi Trondheim AS være en prosess. Taxisentralen som tar i mot henvendelser fra kunder tilsvarer hovedtråden, som kjører så lenge prosessen gjør. Når sentralen kontakter taxier (som bare står stille) og tildeler de kunder, tilsvarer dette at hovedtråden lager en ny tråd. Etter at taxisjåføren har utført oppdraget, kjørt kunden dit den ønsker, stopper taxisjåføren og tråden avsluttes. Men hovedtråden (taxisentralen) vil naturligvis fortsatt ta i mot henvendelser. En prosess (Taxi Trondheim) vil altså kunne mange tråder (taxier) kjørende samtidig.

Trådobjekter 

Det er hovedsakelig to måter å starte en ny tråd på.

Gi et Runnable-objekt til en ny Thread

 

Code Block
languagejava
titleTaxi-Runnable
public class Taxi implements Runnable {
 
	int seats;
 
	public Taxi(int seats) {
		this.seats = seats;
	}

	public void run() {
		// Hente kunde
		// Kjøre kunde
		// Slippe av kunde
	}
}

 

 

Code Block
languagejava
titleMain-Thread
 

 

 



Instansere en klasse som arver Thread: 
 

 

Code Block
languagejava
titleTaxi-Thread
public class Taxi extends Thread {
 
	int seats;
 
	public Taxi(int seats) {
		this.seats = seats;
	}

	public void run() {
		// Hente kunde
		// Kjøre kunde
		// Slippe av kunde
	}
}

 

 

Code Block
languagejava
titleMain-Thread
public static void main(String[] args) {
		
	Taxi taxi = new Taxi(4);
	taxi.start();
 
	Taxi maxitaxi = new Taxi(16);
	maxitaxi.start();
}