new erzeugt und danach seine
start() Methode aufgerufen wird, startet das Thread sein
Lauf und führt die run Methode dieser Klasse. Als
Beispiel definieren wir eine Klasse namens WorkOne.java :
public class WorkOne extends Thread {
String name;
int limit;
public WorkOne(String s, int n) {
name = s;
limit = n;
}
// adds numbers from 1 to limit
public void run() {
long sum = 0;
for (int i=0; i <= limit; i++) {
sum += i;
}
System.out.println(name+"-"+getName()+": SUM"+limit+" -> "+sum);
}
}
und WorkOneApp.java
public class WorkOneApp {
public static void main(String[] args) {
WorkOne work1 = new WorkOne("A", 1000000);
WorkOne work2 = new WorkOne("B", 100000);
WorkOne work3 = new WorkOne("C", 10000);
WorkOne work4 = new WorkOne("D", 100000);
WorkOne work5 = new WorkOne("E", 1000000);
WorkOne work6 = new WorkOne("F", 500000);
work1.start();
work2.start();
work3.start();
work4.start();
work5.start();
work6.start();
}
}
Die main() Methode dieser Klasse erzeugt sechs
WorkOne Objekte und dann startet diese Objekte mit
start().
Als Ergebniss bekommt man:
@> java WorkOneApp B-Thread-5: SUM100000 -> 5000050000 C-Thread-6: SUM10000 -> 50005000 A-Thread-4: SUM1000000 -> 500000500000 D-Thread-7: SUM100000 -> 5000050000 E-Thread-8: SUM1000000 -> 500000500000 F-Thread-9: SUM500000 -> 125000250000Der zweite benutzt eine Klasse, die die Runnable (in java.lang) Interface implementiert. Wenn ein Objekt von Thread mit dieser Klasse als Parameter erzeugt und danach die
start() Methode dieser
Thread aufgerufen wird, startet das Thread sein Lauf und führt
die run Methode dieser Klasse. Als Beispiel definieren
wir eine Klasse namens WorkTwo.java :
public class WorkTwo implements Runnable {
String name;
int limit;
public WorkTwo(String s, int n) {
name = s;
limit = n;
}
// adds numbers from 1 to limit
public void run() {
long sum = 0;
for (int i=0; i <= limit; i++) {
sum += i;
}
System.out.println(name+"-"+Thread.currentThread().getName()+": SUM"+limit+" -> "+sum);
}
}
und WorkTwoApp.java
public class WorkTwoApp {
public static void main(String[] args) {
WorkTwo work1 = new WorkTwo("A", 1000000);
WorkTwo work2 = new WorkTwo("B", 100000);
WorkTwo work3 = new WorkTwo("C", 10000);
WorkTwo work4 = new WorkTwo("D", 100000);
WorkTwo work5 = new WorkTwo("E", 1000000);
WorkTwo work6 = new WorkTwo("F", 500000);
Thread th_work1 = new Thread(work1);
Thread th_work2 = new Thread(work2);
Thread th_work3 = new Thread(work3);
Thread th_work4 = new Thread(work4);
Thread th_work5 = new Thread(work5);
Thread th_work6 = new Thread(work6);
th_work1.start();
th_work2.start();
th_work3.start();
th_work4.start();
th_work5.start();
th_work6.start();
}
}
Die main() Methode dieser Klasse erzeugt zuerst sechs
WorkTwo Objekte und danach erzeugt sechs Threads mit
diesen Objekten. Schliesslich werden die start()
Mehothode dieser Threads ausgeführt.
Als Ergebniss bekommt man:
@> java WorkTwoApp
B-Thread-5: SUM100000 -> 5000050000
C-Thread-6: SUM10000 -> 50005000
D-Thread-7: SUM100000 -> 5000050000
A-Thread-4: SUM1000000 -> 500000500000
F-Thread-9: SUM500000 -> 125000250000
E-Thread-8: SUM1000000 -> 500000500000